Losowość pod mikroskopem nauka o kości, karcie i algorytmie

Losowość nie zaczyna się od komputera, tylko od prostych rzeczy. Rzut sześcienną kostką ma sześć wyników, każdy z jednakową szansą. W potasowanej talii 52 karty mogą ułożyć się na niewyobrażalnie wiele sposobów.
W obu sytuacjach nikt nie zna wyniku z góry. Decyduje drobne drżenie ręki, siła rzutu, tarcie stołu. Fizyczny świat dostarcza entropii, czyli nieuporządkowania, z którego rodzi się los. Dopiero później matematyka i komputery próbują ten chaos opisać i odtworzyć.
Gdzie losowość spotyka cyfrową rozrywkę
Dziś te same idee stoją za generatorami liczb w grach, aplikacjach losujących, a także w sektorze rozrywki online. Zanim ktoś zaufa algorytmom w wirtualnych grach losowych, rozsądnie jest sprawdzić, jak dana platforma podchodzi do bezpieczeństwa i przejrzystości. Dlatego wiele osób przed wyborem serwisu najpierw zagląda na polskakasyno.com, żeby zobaczyć rzetelne opisy mechaniki i używanych generatorów.
Dzięki temu łatwiej odróżnić marketingowe hasła od konkretnych informacji. Świadomość, czy dana usługa korzysta z certyfikowanych generatorów, staje się równie ważna jak wygląd strony czy wysokość bonusu.
TRNG czyli los z fizyki
Prawdziwe generatory losowe TRNG korzystają z procesów, które trudno przewidzieć nawet przy dokładnych pomiarach. Może to być szum termiczny w układach elektronicznych, małe fluktuacje napięcia, czas między fotonami padającymi na czujnik.
Urządzenie mierzy taki sygnał, zamienia go na zera i jedynki, a następnie „czyści” statystycznie. Dzięki temu powstaje strumień bitów, którego nie da się odtworzyć, nawet znając konstrukcję sprzętu. To komputerowy odpowiednik kości rzucanej w idealnie losowy sposób, tylko że bez stołu i dłoni.
TRNG są stosowane tam, gdzie stawką jest bezpieczeństwo. W kryptografii potrzebne są klucze, których nie odgadnie nawet superkomputer. Sprzętowe źródło entropii daje fundament, na którym dopiero buduje się dalsze algorytmy.
PRNG liczby z przepisu
Większość zwykłych aplikacji używa jednak generatorów pseudolosowych PRNG. To fragment kodu, który przyjmuje wartość startową, tzw. seed, a potem wylicza kolejne liczby według ścisłej formuły. Bez ziarna nie ma ciągu.
Typowe źródła ziarna w programach wyglądają bardzo przyziemnie:
-
Aktualny czas systemowy do milisekundy.
-
Liczba kliknięć myszą lub naciśnięć klawiszy w danej chwili.
-
Dane z czujników, na przykład ruchu urządzenia mobilnego.
Z tych danych powstaje liczba początkowa, która potem przechodzi przez wzór, często z użyciem funkcji modulo. Gdy programista liczy X mod Y, interesuje go reszta z dzielenia, tak jak opisuje to artykuł w Komputer Świat. W podanym przykładzie reszta wynosi kolejno 2, 3 i 7, a sam generator produkuje wewnętrzne stany, które dopiero później zamienia się na liczby widoczne dla użytkownika.
Z definicji generator liczb losowych to program lub układ elektroniczny, który tworzy losowy ciąg elementów binarnych o określonych własnościach statystycznych. Taki ciąg powinien być stacjonarny i ergodyczny, co w praktyce oznacza, że rozkład wyników wygląda podobnie niezależnie od momentu, w którym „patrzymy” na strumień.
PRNG nigdy nie jest naprawdę przypadkowy, bo ten sam seed da zawsze ten sam ciąg. Z punktu widzenia gracza albo użytkownika aplikacji często wystarczy jednak, że wzór jest wystarczająco długi, a powtarzanie praktycznie niewidoczne.
Testy, które odróżniają chaos od wzoru
Czy da się sprawdzić, czy liczby są „wystarczająco losowe”? Statycy odpowiadają na to całkiem konkretnie. Stosuje się zestawy testów, które polują na wzory.
Najczęściej używa się kilku prostych badań naraz:
-
Test częstości sprawdza, czy każde wyjście pojawia się zbliżoną liczbę razy.
-
Test serii ogląda, jak często pojawiają się ciągi tych samych bitów.
-
Analiza korelacji szuka zależności między kolejnymi wartościami.
Jeśli generator obleje takie testy, może nadawać się do prostych zadań, ale nie do poważnych zastosowań. Projektanci systemów wiedzą, że słaby RNG otwiera drogę do przewidywania wyników, a więc i do nadużyć. Dlatego sprzętowe i programowe generatory są regularnie sprawdzane, a ich implementacje aktualizowane.
Kość na stole, potasowana talia i linijka kodu robią więc w gruncie rzeczy to samo. Tworzą niepewność. Różnica polega na tym, że w świecie algorytmów tę niepewność trzeba zmierzyć, udokumentować i udowodnić liczbami, a nie tylko intuicją.






