generator losowych liczb

Generator Liczb Losowych

Użyj tego losowego generatora, aby uzyskać naprawdę losową, kryptograficznie bezpieczną liczbę. Generuje losowe liczby, które można wykorzystać tam, gdzie potrzebna jest bezstronna randomizacja, np. podczas losowania liczb na loterię. Losowanie może być również wykorzystane do ustalenia, kto pierwszy zaczyna w grze i tak dalej.

Random Number Generator

Jak wybrać losową liczbę między dwoma liczbami?

Możesz użyć tego generatora liczb losowych, aby wybrać naprawdę losową liczbę między dwoma dowolnymi liczbami. Na przykład, aby uzyskać losową liczbę od 1 do 10, w tym 10, wpisz 1 w pierwszym polu i 10 w drugim, a następnie naciśnij „Uzyskaj losową liczbę”. Nasz losownik wybierze losowo liczbę od 1 do 10. Aby wygenerować losową liczbę od 1 do 100, zrób to samo, ale wtedy wpisz 100 w drugim polu selektora.

Aby zasymulować rzut kostką, zakres powinien wynosić od 1 do 6 dla standardowych kości sześciościennych. Aby wykonać ekwiwalent rzutu monetą, ustaw zakres od 1 do 2, a w selektorach wybierze liczbę od 1 do 2.

Aby wygenerować więcej niż jeden unikalny numer (co oznacza, że ​​nie będzie powtórzeń), po prostu wybierz ile potrzebujesz z rozwijanej listy. Na przykład wybranie 6 liczb z zestawu od 1 do 49 możliwych, byłoby równoznaczne z symulacją losowania loterii dla gry z tymi parametrami.

Gdzie przydają się liczby losowe?

Być może organizujesz loterię charytatywną, rozdanie i musisz wylosować zwycięzcę – ten generator jest dla Ciebie. Jest on całkowicie bezstronny i poza Twoją kontrolą, więc możesz zapewnić swoją publiczność o uczciwości losowania, co może nie być prawdą, jeśli używasz standardowych metod, takich jak rzucanie kostki. Jeśli potrzebujesz wybrać kilka osób spośród uczestników, po prostu wybierz liczbę unikalnych numerów, które chcesz wygenerować przez nasz generator liczb losowych i jesteś gotowy. Jednak zazwyczaj najlepiej jest losować zwycięzców jeden po drugim, aby utrzymać napięcie przez dłuższy czas (odrzucając powtarzające się losowania w miarę upływu czasu).

Generator liczb losowych jest również przydatny, jeśli musisz zdecydować, kto idzie pierwszy w jakiejś grze lub aktywności, takiej jak gry planszowe, gry sportowe i zawody sportowe. To samo dotyczy sytuacji, gdy trzeba zdecydować o kolejności uczestnictwa dla wielu graczy, czy uczestników. Wybieranie zespołu na chybił trafił lub randomizacja listy uczestników również zależy od losowości.

Obecnie wiele państwowych i prywatnych loterii, czy też gier loteryjnych wykorzystuje oprogramowanie RNG zamiast bardziej tradycyjnych metod losowania. RNG są również używane do określania wyników wszystkich nowoczesnych automatów do gier.

Wreszcie, liczby losowe są również przydatne w statystykach i symulacjach. W zastosowaniach statystycznych często trzeba losować liczby z rozkładów innych niż jednorodne, np. rozkład normalny, rozkład dwumianowy, rozkład mocy, rozkład Pareto. W takich przypadkach do przeprowadzenia losowania wymagane jest bardziej zaawansowane oprogramowanie.

Generowanie liczby losowej

Istnieje filozoficzne pytanie, czym dokładnie jest „losowość”, ale jego cechą definiującą jest z pewnością nieprzewidywalność. Nie możemy mówić o nieprzewidywalności pojedynczej liczby, ponieważ ta liczba jest po prostu tym, czym jest, ale możemy mówić o nieprzewidywalności serii liczb (sekwencji liczb). Jeśli ciąg liczb jest losowy, to nie powinniśmy być w stanie przewidzieć następnej liczby w ciągu, znając jakąkolwiek część ciągu do tej pory. Przykładem tego jest rzucenie uczciwej kostki do gry, kręcenie dobrze wyważonym kołem ruletki, losowanie kul z kuli, czy klasyczny rzut monetą. Bez względu na to, ile rzutów kostką, monetą, ruletką czy losowań obserwujesz, nie zwiększasz swoich szans na odgadnięcie kolejnej liczby w sekwencji. Dla osób zainteresowanych fizyką klasycznym przykładem ruchu losowego jest ruch Browninga cząsteczek gazu lub płynu.

Biorąc pod uwagę powyższe i wiedząc, że komputery są w pełni deterministyczne, co oznacza, że ich wyjście jest całkowicie zdeterminowane przez ich wejście, można powiedzieć, że nie możemy wygenerować liczby losowej za pomocą komputera. Jednak będzie to tylko częściowa prawda, ponieważ rzut kostką lub monetą jest również deterministyczny, jeśli znamy stan układu.

Losowość w naszym generatorze liczb pochodzi z procesów fizycznych – nasz serwer zbiera szumy środowiskowe ze sterowników urządzeń i innych źródeł do puli entropii, z której tworzone są liczby losowe.

Źródła losowości

Według Alzhrani & Aljaedi istnieją cztery źródła losowości, które są wykorzystywane w zasiewie generatora liczb losowych, z których dwa są wykorzystywane w naszym wybieraczu liczb:

  • Entropia z dysku przy wywołaniu przez sterowniki – zbieranie zdarzeń seek time of block layer request.
  • Zdarzenia przerwania od sterowników USB i innych urządzeń.
  • Wartości systemowe takie jak adresy MAC, numery seryjne i Real Time Clock – używane tylko do inicjalizacji puli wejściowej, głównie w systemach wbudowanych.
  • Entropia z urządzeń wejściowych – działania myszy i klawiatury (nieużywana).

Dzięki temu RNG, którego używamy w tym randomizerze jest zgodny z zaleceniami RFC 4086 dotyczącymi losowości wymaganej dla bezpieczeństwa.

Generatory liczb prawdziwie losowych a pseudolosowych

Generator liczb pseudolosowych (PRNG) jest maszyną o skończonym stanie z wartością początkową zwaną nasionem. Na każde żądanie wylosowania liczby losowej funkcja transakcyjna oblicza kolejny stan wewnętrzny, a funkcja wyjściowa produkuje rzeczywistą liczbę na podstawie tego stanu. PRNG deterministycznie produkuje okresowy ciąg wartości, który zależy tylko od podanego ziarna początkowego. Przykładem może być liniowy generator kongruencyjny, taki jak PM88. Dzięki temu, znając nawet krótki ciąg wygenerowanych wartości, można zorientować się, jakie ziarno zostało użyte, a tym samym – poznać następną wartość.

Kryptograficzny generator liczb pseudolosowych (CPRNG) jest PRNG w tym sensie, że jest przewidywalny, jeśli znany jest jego stan wewnętrzny. Jednak zakładając, że generator został zasiany z wystarczającą entropią, a algorytmy mają potrzebne właściwości, takie generatory nie ujawnią szybko znacznych ilości swojego wewnętrznego stanu, co oznacza, że potrzebowałbyś ogromnej ilości danych wyjściowych, zanim mógłbyś przeprowadzić na nie udany atak. Randomizatory tego typu są odpowiednie, jeśli generator losujący ma być użyty w sytuacji wysokich stawek.

Sprzętowy RNG opiera się na nieprzewidywalnym zjawisku fizycznym, zwanym „źródłem entropii”. Rozpad radioaktywny, a dokładniej punkty w czasie, w których źródło radioaktywne się rozpada, jest zjawiskiem tak bliskim losowości, jakie znamy, a rozpadające się cząstki są łatwe do wykrycia. Innym przykładem jest zmienność cieplna – niektóre procesory Intela mają detektor szumu termicznego w krzemie układu, który wyprowadza liczby losowe.

Sprzętowe RNG są jednak często stronnicze i co ważniejsze, ograniczone w zdolności do generowania wystarczającej entropii w praktycznych odcinkach czasu, ze względu na niską zmienność próbkowanego zjawiska naturalnego. Dlatego do praktycznych zastosowań potrzebny jest inny rodzaj RNG: generator liczb losowych (TRNG – true random number generator). W nim kaskady sprzętowych RNG (entropia harvester) są wykorzystywane do okresowego zasilania PRNG. Gdy entropia jest wystarczająca, zachowuje się on jak TRNG. Jest to rodzaj procesu używanego do generowania liczb losowych w tym narzędziu.

Jak działa generator liczb losowych?

Generator liczb losowych jest algorytmem, który produkuje ciąg pseudolosowych liczb.

Co to jest generator liczb?

A generator liczb to program lub urządzenie, które służy do wytwarzania ciągów liczb. Może być używany do generowania pseudolosowych liczb lub liczb o określonej strukturze.

Jak stworzyć generator liczb losowych?

W języku C++ generator liczb losowych można utworzyć za pomocą funkcji rand(). Aby użyć tej funkcji, należy zawrzeć plik nagłówkowy .

Gdzie wykorzystuje się losowanie liczb?

Losowanie liczb jest używane w wielu dziedzinach, takich jak nauka, finanse i gry. Można je używać do generowania liczb losowych, do testowania algorytmów i do symulacji.

Gdzie można zastosować generator liczb?

– w programach komputerowych do generowania liczb pseudolosowych
– w układach elektronicznych do generowania sygnałów o różnych częstotliwościach
– w fizyce do badania własności materii i środowiska