Zasada działania generatora liczb losowych. Opis: generator liczb lotto

06.04.2019

O makroskopowych procesach losowych wykorzystujących tak proste obiekty jak kostka do gry, ruletka lub moneta, mogą być oparte generatory losowe liczby . Teoria chaosu i teoria niestabilnych układów dynamicznych mogą wyjaśnić obecność nieprzewidywalności danych, a nawet systemy makroskopowe całkowicie zdefiniowane równaniami Newtona często dają w praktyce nieprzewidywalne wyniki, ponieważ zależą one od mikroskopijnych szczegółów warunków początkowych.

Przy okazji, na naszej stronie internetowej możesz wygenerować liczbę losową za pomocą internetowego generatora liczb losowych.

Co to jest generator liczb losowych i jak wykorzystuje losowe procesy fizyczne?

Szybkość uzyskiwania liczb losowych wystarczające dla stosowanych problemów, nie mogą być zapewnione przez urządzenia oparte na makroskopowych procesach losowych. Źródło szumu, z którego wydobywane są losowe bity, leży zatem w sercu nowoczesnych AGNG. Wyróżnia się dwa rodzaje źródeł hałasu: te, które mają charakter kwantowy i te, które nie wykorzystują zjawisk kwantowych.

Niektóre Zjawiska naturalne, takie jak rozpad promieniotwórczy atomów, są całkowicie losowe i w zasadzie nieprzewidywalne (eksperyment Davissona-Germera można uznać za jedno z pierwszych eksperymentów udowadniających probabilistyczny charakter niektórych zjawisk), fakt ten jest konsekwencją prawa fizyki kwantowej. A z mechaniki statystycznej wynika, że ​​każdy układ ma swoje parametry przypadkowe wahania, jeśli temperatura nie jest równa zeru absolutnemu.

Złożony generator liczb losowych.

Dla AGS „złotym standardem” są niektóre procesy mechaniki kwantowej, ponieważ są one całkowicie losowe. Używanie w generatory liczb losowych zjawiska obejmują:

  • Szum śrutowy to szum powstający w obwodach elektrycznych na skutek dyskretności nośników ładunek elektryczny i termin ten odnosi się również do szumu powodowanego w przyrządach optycznych przez nieciągłość nośnika światła.
  • Można również zastosować spontaniczne rozpraszanie parametryczne generatory liczb losowych.
  • Rozpad radioaktywny - charakteryzuje się losowością każdego z poszczególnych zdarzeń rozpadu, dlatego jest wykorzystywany jako źródło hałasu. W rezultacie do odbiornika (może to być licznik Geigera lub licznik scyntylacyjny) trafia różna liczba cząstek w różnych odstępach czasu.

Znacznie łatwiej jest wykryć zjawiska niekwantowe, ale w oparciu o nie generatory liczb losowych, wówczas będą one silnie zależne od temperatury (na przykład ilość szumu termicznego będzie proporcjonalna do temperatury środowisko). Wśród procesów stosowanych w AGNG można wyróżnić następujące procesy:

  • Szum termiczny w rezystorze powstający po wzmocnieniu losowy generator napięcia. W szczególności generator liczb w komputerze Ferranti Mark 1 został oparty na tym zjawisku.
  • Szum atmosferyczny mierzony przez odbiornik radiowy może obejmować także odbiór cząstek przybywających z kosmosu na Ziemię, zarejestrowanych przez odbiornik, a ich liczba będzie losowa, w różnych odstępach czasu.
  • Różnica w szybkości zegarów jest zjawiskiem, które oznacza, że ​​szybkości różnych zegarów w ogóle nie będą się pokrywać.

Aby uzyskać w wyniku fizycznego procesu losowego sekwencja losowych bitów, istnieje kilka podejść do tego. Jednym z nich jest to, że odebrany sygnał do szumu jest wzmacniany, następnie filtrowany i podawany na wejście szybkiego komparatora napięcia w celu uzyskania sygnału logicznego. Czas trwania stanów komparatora będzie losowy, co pozwala na tworzenie sekwencja liczb losowych, dokonując pomiarów tych stanów.

Drugie podejście polega na tym, że na wejście przetwornika analogowo-cyfrowego (można zastosować zarówno specjalne urządzenia, jak i wejście audio komputera) podaje się losowy sygnał, reprezentujący ciąg liczb losowych, w wyniku którego powstanie zdigitalizowany sygnał sygnału i jednocześnie może być przetwarzany programowo.

Co to jest generator liczb losowych i jakie inne zjawiska wykorzystuje?

Używanie fizycznego procesy losowegeneratory liczb losowych, umożliwiają uzyskanie dobrych liczb losowych, ale ich produkcja jest kosztowna i stosunkowo trudna (szczególnie w przypadku ANGN opartych na rozpadzie radioaktywnym), ale istnieją inne, bardziej dostępne źródła losowości:

Proste generowanie liczb losowych.

Do najbardziej niezwykłych generatorów należy zaliczyć pracę cyfrowych kamer wideo wykorzystujących rejestrację zjawisk makroskopowych. Na przykład, do generowania liczb losowych, zespół z Silicon Graphics wykorzystał materiał wideo przedstawiający lampę lawową, ponieważ wosk chaotycznie zmienia swój kształt w lampie. Strumienie z wentylatora w strumieniu powietrza lub bąbelki w akwarium można również wykorzystać jako obiekt do fotografii.

  • Tłumaczenie

Wyobraź sobie, że jest rok 1995 i masz zamiar dokonać pierwszego zakupu online. Otwierasz przeglądarkę Netscape i popijasz kawę strona głównaŁaduje się powoli. Twoja droga prowadzi do Amazon.com – nowego sklepu internetowego, o którym powiedział Ci znajomy. Kiedy dochodzi do etapu finalizacji zakupu i wprowadzenia danych osobowych, adres w przeglądarce zmienia się z „http” na „https”. Oznacza to, że komputer nawiązał szyfrowane połączenie z serwerem Amazon. Teraz możesz wysłać dane na serwer karta kredytowa bez obawy przed oszustami chcącymi przechwycić informacje.

Niestety, Twój pierwszy zakup online był od samego początku zagrożony: wkrótce odkryjesz, że rzekomo bezpieczny protokół używany przez przeglądarkę do nawiązania połączenia w rzeczywistości nie jest zbyt bezpieczny.

Problem polega na tym, że tajne klucze używane przez Netscape nie były wystarczająco losowe. Miały tylko 40 bitów, co oznaczało około biliona możliwych kombinacji. Wydaje się duża liczba, ale hakerom udało się złamać te kody, nawet na komputerach z lat 90., w około 30 godzin. Ponoć losowa liczba, której Netscape użył do wygenerowania tajnego klucza, została oparta na właśnie trzy znaczenia: pora dnia, numer identyfikacyjny procesu i numer identyfikacyjny procesu macierzystego są przewidywalne. Dzięki temu atakujący był w stanie zmniejszyć liczbę opcji brute-force i znaleźć żądany klucz znacznie wcześniej, niż oczekiwał Netscape.

Programiści Netscape chcieliby użyć całkowicie losowych liczb do wygenerowania klucza, ale nie wiedzieli, jak je zdobyć. Powód jest taki, że komputery cyfrowe znajdują się zawsze w ściśle określonym stanie, który zmienia się dopiero po otrzymaniu określonego polecenia z programu. Najlepsze, co możesz zrobić, to emulować losowość, generując tak zwane liczby pseudolosowe za pomocą specjalnej funkcji matematycznej. Zestaw takich liczb na pierwszy rzut oka wydaje się całkowicie losowy, ale ktoś inny stosując tę ​​samą procedurę może z łatwością wygenerować dokładnie te same liczby, więc zwykle nie nadają się one do szyfrowania.

Naukowcom udało się wynaleźć generatory liczb pseudolosowych, które okazały się bezpieczne kryptograficznie. Muszą jednak zacząć od dobrego losowego materiału siewnego, w przeciwnym razie zawsze będą generować ten sam zestaw liczb. A do tej wartości początkowej potrzeba czegoś, czego naprawdę nie da się odgadnąć ani przewidzieć.

Na szczęście nie jest trudno uzyskać naprawdę nieprzewidywalne wartości, wykorzystując chaotyczny wszechświat otaczający ze wszystkich stron ściśle deterministyczny świat bitów komputerowych. Ale jak dokładnie to zrobić?

Podczas ostatnie lata istnieje internetowe źródło liczb losowych o nazwie Lavarand. Powstał w 1996 roku, aby automatycznie generować losowe wartości poprzez przetwarzanie zdjęć lampy dekoracyjnej – lampy lawowej, która co sekundę zmienia swój wygląd w nieprzewidywalny sposób. Od tego czasu losowe wartości z tego źródła zostały wykorzystane ponad milion razy.

Istnieją również bardziej wyrafinowane sprzętowe generatory liczb losowych, które wykrywają efekty kwantowe, takie jak fotony uderzające w lustro. Możesz uzyskać liczby losowe na zwykłym komputerze, rejestrując nieprzewidywalne zdarzenia, takie jak dokładny czas naciśnięcia przycisku klawiatury. Ale aby uzyskać dużą liczbę takich losowych wartości, trzeba nacisnąć wiele przycisków.

Moi koledzy i ja w firmie Intel zdecydowaliśmy, że musimy opracować prostszy sposób. Dlatego od ponad dziesięciu lat wiele naszych chipsetów zawiera analogowy sprzętowy generator liczb losowych. Problem polega na tym, że jego obwód analogowy marnuje energię. Ponadto trudno jest utrzymać funkcjonalność tych obwodów analogowych, ponieważ proces produkcji chipów ulega poprawie i zostaje zminiaturyzowany. Dlatego opracowaliśmy teraz nowy, całkowicie cyfrowy system, który pozwala mikroprocesorowi generować bogaty strumień losowych wartości bez tych problemów. Ten nowy cyfrowy generator liczb losowych będzie wkrótce dostępny z nowym procesorem.

Pierwsza próba Intela Tworzenie najlepszego generatora liczb losowych na zwykłych komputerach PC sięga 1999 roku, kiedy Intel wprowadził komponent Firmware Hub dla chipsetów. Generator liczb losowych (PDF) znajdujący się w chipie to analogowy oscylator pierścieniowy, który wykrywa szum termiczny pochodzący z rezystorów, wzmacnia go i wykorzystuje uzyskany sygnał do zmiany okresu stosunkowo wolnego generatora zegara. Na każde nieprzewidywalne „tyknięcie” tego powolnego generatora mikroukład narzucał częstotliwość oscylacji drugiego, szybkiego generatora, który regularnie zmienia swoją wartość pomiędzy dwoma stanami binarnymi: 0 i 1. Rezultatem jest nieprzewidywalna sekwencja zer i jedynek.

Problem w tym, że oscylator pierścieniowy, który odpowiada za wzmocnienie sygnału termicznego, pobiera za dużo prądu – i pracuje ciągle, niezależnie od tego, czy komputer potrzebuje w nim losowych liczb, czy nie. ten moment. Te analogowe komponenty są również uciążliwe, gdy firma zmienia proces produkcji chipów. Co kilka lat firma modernizuje swoje linie produkcyjne, aby produkować chipy na mniejszą skalę. I za każdym razem, gdy ten analogowy fragment trzeba skalibrować i przetestować w nowy sposób – ta skomplikowana i żmudna praca przyprawiała o prawdziwy ból głowy.

Dlatego w 2008 roku firma Intel podjęła się opracowania generatora liczb losowych działającego całkowicie cyfrowo. Naukowcy z firmy w Hillsboro (Oregon, USA) wraz z inżynierami z Design Lab w Bangalore (Indie) rozpoczęli badania kluczowego problemu - jak uzyskać losowy strumień bitów bez użycia układów analogowych.

Jak na ironię, proponowane przez nich rozwiązanie narusza podstawową zasadę projektowania cyfrowego, zgodnie z którą obwód musi zawsze znajdować się w określonej pozycji i zwracać logiczne 0 lub 1. Oczywiście element cyfrowy może przebywać przez krótki czas w nieokreślonym położeniu, przełączając pomiędzy tymi dwiema wartościami. Musi jednak działać niezwykle precyzyjnie i nigdy nie powinien pomiędzy nimi oscylować, w przeciwnym razie będzie to powodować opóźnienia, a nawet awarie w systemie. W naszym generatorze losowych bitów wahania są cechą, a nie błędem.

Nasz poprzedni generator analogowy był w stanie wygenerować zaledwie kilkaset kilobitów liczb losowych na sekundę, podczas gdy nowy generuje je z szybkością około 3 Gb/s. Zaczyna się od zebrania prawie losowych wartości dwóch falowników w 512-bitowych blokach. Bloki te są następnie dzielone na pary liczb 256-bitowych. Oczywiście, jeśli oryginalne 512 bitów nie jest całkowicie losowe, te 256-bitowe liczby również nie będą całkowicie losowe. Można je jednak matematycznie połączyć, aby uzyskać 256-bitową liczbę bliską ideału.


TRZY POZIOMY NUMERÓW: Generator liczb losowych Intel Bull Mountain zapobiega wszelkim wahaniom przewidywalności w trzyetapowym procesie. Po pierwsze, obwód cyfrowy generuje strumień losowych bitów. Następnie „normalizator” (kondycjoner) generuje dobre losowe nasiona w oparciu o ten strumień. W trzecim etapie generator liczb pseudolosowych generuje strumień cyfr do wykorzystania oprogramowanie.

Wszystko to lepiej zilustruje prosta ilustracja. Załóżmy na sekundę, że generator bitów losowych generuje 8-bitowe wzorce, czyli liczby z zakresu od 0 do 255. Załóżmy również, że te 8-bitowe liczby nie są całkowicie losowe. Teraz wyobraźmy sobie, że na przykład jakaś subtelna usterka w obwodzie przesuwa wartości wyjściowe w dolną część zakresu. Na pierwszy rzut oka strumień liczb losowych wydaje się dobry, ale jeśli przetworzysz miliony wartości, zauważysz, że liczby na górze zakresu są nieco rzadsze niż liczby na dole.

Jedno z możliwych rozwiązań tego problemu jest proste: zawsze bierz parę liczb 8-bitowych, mnóż je, a następnie odrzucaj osiem górnych bitów wynikowej liczby 16-bitowej. Ta procedura prawie całkowicie wyeliminuje zniekształcenia.

Bull Mountain nie działa z liczbami 8-bitowymi: działa, jak już wspomniano, z liczbami 256-bitowymi. I nie mnoży ich, ale wykonuje bardziej złożone operacje kryptograficzne. Ale podstawowa idea jest taka sama. Można myśleć o tym kroku jako o „normalizacji” mającej na celu wyeliminowanie wszelkich odchyleń od losowego rozkładu liczb, które mogą wystąpić w obwodzie z dwoma falownikami.

Bardzo chcemy dobrze spać w nocy, dlatego zaprojektowaliśmy dodatkowy układ, który testuje strumienie 256-bitowych liczb trafiających do „normalizatora” tak, aby nie były one zbyt przekrzywione w jednym kierunku. Jeżeli coś takiego zostanie znalezione, oznaczamy je jako wadliwe i niespełniające standardów. Dlatego operacje są wykonywane tylko na parach liczb o wysokiej jakości.

Gwarantowana losowość nie wystarczy, jeśli losowe wartości nie są generowane wystarczająco szybko, aby spełnić standardy. Chociaż pętla sprzętowa generuje wątek znacznie szybciej niż jej poprzedniczki, to w dalszym ciągu nie jest wystarczająca do niektórych współczesnych zadań. Aby Bull Mountain mógł generować liczby losowe tak szybko, jak programowe generatory liczb pseudolosowych generują strumień, ale jednocześnie oszczędzać wysoka jakość liczb losowych, dodaliśmy do schematu jeszcze jeden poziom. W tym przypadku 256-bitowe liczby losowe są wykorzystywane jako kryptograficznie bezpieczne nasiona losowe do generowania duża ilość liczby pseudolosowe 128-bitowe. Ponieważ liczby 256-bitowe są dostarczane z częstotliwością 3 GHz, gwarantuje się wystarczającą ilość materiału do szybkiego wygenerowania kluczy kryptograficznych.

Nowa instrukcja, zwana RdRand, umożliwia programowi potrzebującemu liczb losowych wysłanie żądania do sprzętu, który je produkuje. Zaprojektowana dla 64-bitowych procesorów Intel, instrukcja RdRand jest kluczem do generatora Bull Mountain. Wyodrębnia 16-, 32- lub 64-bitowe wartości losowe i umieszcza je w rejestrze dostępnym dla programu. Instrukcja RdRand została udostępniona publicznie około rok temu, a pierwszym procesorem Intela, który ją obsłuży, będzie Ivy Bridge. Nowy chipset jest o 37% szybszy od poprzednika, a rozmiar jego minimalnych elementów został zmniejszony z 32 do 22 nanometrów. Ogólny wzrost wydajności dobrze pasuje do potrzeb naszego generatora liczb losowych.

Chociaż lampy lawowe wyglądać dobrze, nie będą pasować do każdego wnętrza. Uważamy, że wręcz przeciwnie, nasze podejście do generowania liczb losowych znajdzie najbardziej uniwersalne zastosowanie.

Jak już wspomniano, w przeszłości rejestrowanie dokładnego czasu naciśnięć klawiszy było wygodnym źródłem losowych wartości początkowych dla generatorów. W tym samym celu wykorzystaliśmy ruchy myszy, a nawet prędkość przeszukiwania sektorów na dysku twardym. Jednak takie zdarzenia nie zawsze dają wystarczającą liczbę losowych bitów, a po pewnym czasie pomiaru bity te stają się przewidywalne. Gorzej, ponieważ żyjemy teraz w świecie serwerów

Każdego dnia coraz więcej osób interesuje się kasynami online. Dla niektórych te gry są po prostu rozrywką, podczas gdy inni uważają je za sposób na zarabianie pieniędzy. Zapewne każdego z graczy zainteresuje sposób działania generatora liczb losowych, który generuje szczęśliwe kombinacje.

Urządzenie do gier hazardowych

Nowoczesny jednoręki bandyta http://igrat-avtomati-wulcan.com ma dość złożony algorytm, który tworzy zwycięskie kombinacje. Można go podzielić na części: czujniki w postaci generatorów, licznik, który przyjmuje płatności i wydaje wygrane, system przechowywania duże nagrody w formie jackpota, algorytm w postaci jądra do wydawania zwycięskich środków. Algorytmy te są uformowane w strukturę mechaniczną w postaci automatów lub ruletki.

Czujnik losowych kombinacji i liczb. (RNG)

Teraz możemy opisać działanie samego RNG. Takie czujniki zostały opracowane z myślą o uczynieniu gry możliwie najbardziej nieprzewidywalną. Ten schemat działa z równie prawdopodobnego powodu, na przykład zatrzymuje kulkę w różnych otworach na kole ruletki. W przypadku automatów system działa dokładnie tak samo, tyle że zatrzymuje symbole.

W nowoczesnym gniazdo do gier, programista może zainstalować więcej niż jeden RNG. Jeśli weźmiemy za przykład grę trzy siódemki, może być kilka czujników dla poszczególnych kombinacji, a także odrębne gatunki czujnik zatrzymujący numery cyfrowego koła lub bębna.

W grach takich jak Polka Miracles instalowane są czujniki zatrzymujące liczby w grze, a także czujniki obliczające odstęp czasowy każdej gry i rejestrujące przejście do innych boiska. Zastosowanie więcej niż jednego czujnika ma na celu zmniejszenie liczby losowych wygranych. Ponadto w przypadku dużych nagród w postaci jackpotów zwykle instalowane są osobne czujniki, które dają zwycięska kombinacja przez przypadek, którego nie da się obliczyć.

Jeśli rozpatrzymy generator liczb losowych z matematycznego punktu widzenia, nie da się obliczyć jego działania za pomocą różnych wzorów. Jeśli jednak weźmiesz pod uwagę już zwycięską sytuację i przeprowadzisz obliczenia od początku jednej gry do końca, to nadal możesz napisać formułę. To smutne, że po wydaniu jackpota liczby będą nadal generowane. Nowa formuła, co będzie znane dopiero po wyniku meczu.

Istnieje również opinia, że ​​właściciel maszyny może skonfigurować ustawienia czujnika w taki sposób, aby każdy wygrywający slot pojawiał się warunkowo co 300 lub 500 gier, jednak sam właściciel nie może dokładnie wiedzieć, ile wygenerowanych algorytmów spowoduje dokładne zwycięstwo. Ale fakt, że czujniki są regulowane, jest faktem. Aby uniknąć konfliktu interesów, instalują nie jeden czujnik, ale kilka, w przeciwnym razie właściciel kasyna zawsze pozostałby na minusie, a w przeciwnym razie czujnik mógłby zostać rozwiązany przez każdą wykwalifikowaną osobę i wyczyścić kasę kasyna w sposób prawie legalny.

Zasada działania generatora liczb losowych znana jest z nieprzewidywalności, jednakże poddaje się przynajmniej w pewnym stopniu analizie, ale w połączeniu z kilkoma dodatkowymi czujnikami wszystko staje się znacznie bardziej zagmatwane, co czyni kasyno sukcesem hazardowym, co jest dlaczego jest tak popularny na całym świecie.

Co to jest losowość w komputerze? Jak generowane są liczby losowe? W tym artykule staraliśmy się udzielić prostych odpowiedzi na te pytania.

W oprogramowaniu i ogólnie w technologii istnieje potrzeba powtarzalnej losowości: liczby i obrazy, które wydają się losowe, są w rzeczywistości generowane przez określony algorytm. Nazywa się to pseudolosowością i przyjrzymy się temu proste sposoby tworzenie liczb pseudolosowych. Na końcu artykułu sformułowamy proste twierdzenie dotyczące generowania tych pozornie losowych liczb.

Ustalenie, co dokładnie stanowi wypadek, może być dość trudne. Istnieją testy (takie jak złożoność Kołmogorowa), które mogą ci dać Dokładna wartość jak losowa jest dana sekwencja. Ale nie będziemy się tym przejmować, spróbujemy po prostu stworzyć sekwencję liczb, które będą wydawać się ze sobą niepowiązane.

Często potrzebna jest nie tylko jedna liczba, ale kilka liczb losowych generowanych w sposób ciągły. Dlatego podane wartość początkowa, musimy utworzyć inne liczby losowe. Ta wartość początkowa nazywa się nasionko i zobaczymy, jak to zdobyć później. Na razie skupmy się na tworzeniu innych wartości losowych.

Generowanie liczb losowych z materiału siewnego

Jednym z podejść może być zastosowanie jakiegoś szalonego wzoru matematycznego do materiału siewnego, a następnie przekręcenie go tak bardzo, że liczba wyjściowa wydaje się nieprzewidywalna, a następnie przyjęcie tego jako materiału siewnego w następnej iteracji. Pytanie tylko, jak powinna wyglądać ta funkcja zniekształcenia.

Poeksperymentujmy z tym pomysłem i zobaczmy, dokąd nas to zaprowadzi.

Funkcja zniekształcenia przyjmie jedną wartość i zwróci inną. Nazwijmy to R.

R(Wejście) -> Wyjście

Jeśli wartość naszego ziarna wynosi 1, wówczas R utworzy serię 1, 2, 3, 4,... To wcale nie wygląda na przypadkowe, ale do tego dojdziemy. Niech R teraz doda stałą zamiast 1.

R(x) = x + do

Jeśli c równa się na przykład 7, to otrzymamy szereg 1, 8, 15, 22, ... Nadal nie to samo. Oczywiście brakuje nam tego, aby liczby nie tylko wzrastały, ale także były rozłożone w pewnym zakresie. Potrzebujemy naszej sekwencji, aby wrócić na początek - krąg liczb!

Koło liczbowe

Spójrzmy na tarczę zegara: nasz rząd zaczyna się od 1 i krąży po okręgu aż do 12. Ale ponieważ pracujemy z komputerem, niech będzie 0 zamiast 12.

Teraz zaczynając od 1, ponownie dodamy 7. Postęp! Widzimy, że po 12 nasz szereg zaczyna się powtarzać, niezależnie od liczby, od której zaczniemy.

Otrzymujemy tu bardzo ważną właściwość: jeśli nasza pętla składa się z n elementów, to maksymalna liczba elementów, które możemy uzyskać, zanim zaczną się powtarzać, wynosi n.

Przepiszmy teraz funkcję R, aby pasowała do naszej logiki. Możesz ograniczyć długość pętli za pomocą operatora modułu lub operatora reszty.

R(x) = (x + c) % m

R (x) = (x + c) % m

W tym momencie możesz zauważyć, że niektóre liczby nie pasują do c. Jeśli c = 4 i zaczęliśmy od 1, nasza sekwencja będzie wynosić 1, 5, 9, 1, 5, 9, 1, 5, 9, ... co oczywiście w naszym przypadku nie działa, ponieważ ta sekwencja jest absolutnie nie losowe. Staje się jasne, że liczby, które wybieramy dla długości pętli i długości skoku, muszą być powiązane w specjalny sposób.

Jeśli spróbujesz kilku różne znaczenia, wtedy widać jedną właściwość: m i c muszą być względnie pierwsze.

Do tej pory robiliśmy postępy, dodając, ale co, jeśli zastosujemy mnożenie? Pomnóżmy się X do stałej A.

R(x) = (ax + c) % m

R (x) = (ax + c) % m

Właściwości, które muszą być przestrzegane, aby mogły zostać uformowane pełny cykl, są nieco bardziej szczegółowe. Aby utworzyć prawidłową pętlę:

  1. (a - 1) musi być podzielna przez wszystkich czynniki pierwsze M
  2. (a - 1) musi być podzielne przez 4, jeśli m jest podzielne przez 4

Własności te, wraz z zasadą, że m i c muszą być względnie pierwsze, stanowią twierdzenie Hulla-Dobella. Nie będziemy patrzeć na jego dowód, ale jeśli weźmiesz kilka różnych wartości dla różnych stałych, możesz dojść do tego samego wniosku.

Wybór nasion

Teraz czas porozmawiać o zabawnej części: wyborze początkowego materiału siewnego. Moglibyśmy zrobić z tego stałą. Może to być przydatne w przypadkach, gdy potrzebujesz liczb losowych, ale chcesz, aby były takie same przy każdym uruchomieniu programu. Na przykład utworzenie tej samej mapy dla każdej gry.

Innym sposobem jest pobranie materiału siewnego z nowego źródła przy każdym uruchomieniu programu, np. z zegara systemowego. Jest to przydatne, gdy potrzebna jest całkowita liczba losowa, jak w programie rzucającym kostką.

Ostateczny wynik

Kiedy kilka razy zastosujemy funkcję do jej wyniku, otrzymamy relację powtarzania. Napiszmy naszą formułę za pomocą rekurencji.

Czy sprawdziłeś kiedyś stwierdzenie, że na 10 spinów ruletki 5 razy wypadnie liczba parzysta? A może już kilka razy brałeś udział w loteriach i udało Ci się je wygrać? Jeśli przyjmiemy, że wszystkie wyniki są rzeczywiście losowe, wówczas możemy mówić o prawdopodobieństwie wystąpienia określonego zdarzenia.

Parafrazując ostatnie stwierdzenie, powtórzmy słowa osób, które od miesięcy uczestniczą w wydarzeniach o losowych skutkach: wszechmocna losowość działa.

Jak zatem sprawdzić, czy zasada rozkładu jest losowa? Z zadaniem tym poradzi sobie generator liczb losowych. Jego główną zaletą jest to, że działa online, co oznacza, że ​​jest bardzo szybki i nie zależy od obecności połączenia internetowego po pobraniu.

Jak działa generator liczb losowych?

Do opisania pracy nie potrzeba wielu liter, wszystko jest bardzo proste: należy wybrać minimalną i maksymalną możliwą liczbę, wpisać liczbę wygenerowanych wartości, jeśli to konieczne, zaznaczyć checkbox „Wyklucz powtórzenia”, co zapobiega pojawienie się liczb, które już istniały, i kliknij przycisk generuj. Następnie każde kolejne kliknięcie przycisku spowoduje wygenerowanie nowych opcji dystrybucji.

Dlaczego może to być potrzebne? Na przykład dostać Szczęśliwe liczby w loterii lub ruletce. Ponadto generator liczb pseudolosowych jest w stanie emulować beczki lotto lub rzut monetą w konkursie - orzeł i reszka są reprezentowane przez zero lub jeden. Ale najważniejsze jest to, że po załadowaniu strony nie potrzebujesz połączenia z Internetem - kod jest napisany w JavaScript i wykonywany po stronie użytkownika, w jego przeglądarce.

Testowanie działania tego generator internetowy czasami dawało bardzo ciekawe rezultaty: użycie liczb 0 i 1 przy 10 możliwościach nierzadko dawało rozkład w stosunku 7 do 3, a nawet 6 identycznych liczb z rzędu.

Do czego jeszcze, poza lotto i powyższymi przykładami, losowość może przydać się przy rozdzielaniu liczb? Przynajmniej na potrzeby gry w zgadywanie. Prawdopodobnie grałeś w tę grę w dzieciństwie: gospodarz zgaduje liczbę od 1 do 100, a pozostali próbują ją odgadnąć. W stosunku do tego generatora pełnisz rolę lidera, a komputer próbuje odgadnąć, co się kryje.

Możesz nawet grać Bitwa morska, otrzymując natychmiast grupę liczb z zakresu od 0 do 99. W tym przypadku najbardziej znacząca cyfra liczby jest używana jako litery (które są oznaczone poziomo) - 0 ... 9 to ... i dolne cyfry w tym przypadku zastępują zakres 1...10, wówczas dodawana jest tylko jedna. Być może teraz takie podejście nie wydaje się zbyt jasne, ale jest to kwestia przyzwyczajenia.

Inny ciekawy sposób użyj - sprawdź swoją intuicję. Próbujesz przewidzieć, jakie liczby (pojedynczo lub w grupie) wygeneruje generator, naciśnij przycisk i sprawdź, jak blisko byłeś prawidłowego wyniku. Kto wie, może po kilku próbach uda się trafnie przewidzieć wynik?

Należy jednak wziąć pod uwagę, że generator liczb losowych nie bez powodu nazywany jest tak. Istniejące dziś metody nie są w stanie podać prawdziwie losowej wartości – zależy ona od wielu czynników, do których zaliczać się może poprzednia liczba, aktualny czas, zawartość konkretnej komórki pamięci i inne dane. Ale na potrzeby domowe ich funkcjonalność jest zwykle wystarczająca w 100%.

Cóż, mam nadzieję, że znajdziesz szersze zastosowanie dla generatora niż opisane tutaj opcje. A może nawet możesz zasugerować dobry pomysł aby rozszerzyć istniejącą funkcjonalność. W końcu były to najbardziej niesamowite myśli, które ostatecznie zmieniły się z mglistego pomysłu w prawdziwe ucieleśnienie.



Podobne artykuły