Ostatnio widziałem to pytanie na stronie math.SE. Zmusiło mnie to do myślenia. Czy Pi można wykorzystać jako surowy generator liczb losowych? Mam na myśli, że wyniki są dobrze znane (jak długo do tej pory obliczono liczbę Pi?), Ale Pi wydaje się dość losowy, gdy jest pobierany 1 cyfra na raz.
Czy to w ogóle ma sens?
Odpowiedzi:
Kopanie ze strony http://www.befria.nu/elias/pi/binpi.html w celu uzyskania wartości binarnej liczby pi (aby łatwiej było przekonwertować ją na bajty niż próbować używać cyfr dziesiętnych), a następnie uruchomić ją przez ent Dostaję następujące do analizy losowego rozkładu bajtów:
Tak więc, użycie pi do losowych danych dałoby ci dość losowe dane ... wiedząc, że są to dobrze znane losowe dane.
Z powyższego komentarza ...
Tak więc obliczyłem pierwiastek kwadratowy z 2 w postaci binarnej, aby rozwiązać ten sam zestaw problemów. Używając iteracji Wolframa napisałem prosty skrypt perla
Uruchomiłem to dla pierwszych 10 pasujących A095804, więc byłem pewien, że mam sekwencję. Wartość v n jak zapisana binarnie z punktem binarnym umieszczonym po pierwszej cyfrze daje przybliżenie pierwiastka kwadratowego z 2.
Użycie ent przeciwko tym danym binarnym powoduje:
źródło
Cóż, oprócz innych właściwości generatora liczb losowych, prawdopodobnie chcesz, aby był on liczbą normalną . I kilka odpowiedzi z pytania matematycznego.
źródło
Taki generator byłby generatorem pseudoliczbowym, tzn. Biorąc pod uwagę to samo ziarno, wynik byłby zawsze taki sam. To powiedziawszy, w większości platform, kiedy używasz standardowego generatora liczb losowych, istnieje ten sam problem bycia pseudolosowym.
Rozkład cyfr wydaje się być dość podobny do standardowych generatorów liczb losowych¹, więc cyfry π mogą być użyte w zwykłych scenariuszach generowania liczb losowych.
Problem polega na tym, że algorytm będzie prawdopodobnie bardzo wolny w porównaniu ze zwykłymi generatorami liczb losowych, więc nie jest zbyt przydatny w praktyce.
¹ Wierzę, że to prawda, ale nie mam żadnych dowodów. Interesujące (i nie komplikujące) byłoby porównanie na podstawie dużej liczby liczb.
źródło
Losowość cyfr liczby pi (lub, w tym przypadku, dowolnej innej sekwencji) można prawdopodobnie przetestować za pomocą tak zwanych „testów baterii”. Jednym z popularnych testów baterii jest Diehard Battery Test George'a Marsaglii . Istnieje również specjalna publikacja NIST 800-22, która opisuje szereg takich testów i wyniki zastosowania tych testów do szeregu stałych fizycznych, w tym - lo i patrz - pi dla ponad miliona bitów. Wynik pi jest podany w załączniku B do raportu i wygląda następująco:
Czy pi jest dobrym generatorem losowych sekwencji? Spójrz na powyższe wyniki (lub wyszukaj znaczenie zmiennej lewej kolumny, jeśli nie masz pojęcia, co one oznaczają) i sprawdź, czy spełnia twoje potrzeby.
źródło