Kto losuje
Karty, kości, litery w Literakach i kamienie losuje serwer OMGLoft, a nie Twoja przeglądarka. Nikt — ani gracze, ani obsługa serwisu — nie wybiera, co komu przypadnie.
Skąd biorą się liczby
Serwer prosi system operacyjny o losowe bajty z jego generatora kryptograficznego. To ten sam rodzaj generatora, którego używa się do tworzenia haseł i kluczy szyfrujących. Takich liczb nie da się przewidzieć ani z góry, ani na podstawie poprzednich.
Każda wartość ma równą szansę
Z 32 losowych bitów (liczba od 0 do 4 294 967 295) trzeba zrobić liczbę z mniejszego zakresu, na przykład numer jednej z 52 kart. Zwykła reszta z dzielenia faworyzowałaby niektóre wartości, bo 4 294 967 296 nie dzieli się równo przez 52. Dlatego nadmiar odrzucamy i losujemy jeszcze raz. Oto cały kod tej funkcji:
defp uniform(n) do
limit = div(0x1_0000_0000, n) * n
<<value::32>> = :crypto.strong_rand_bytes(4)
if value < limit, do: rem(value, n), else: uniform(n)
endlimitto największa wielokrotnośćn, jaka mieści się w 32 bitach. Liczby odlimitw górę to nadmiar.:crypto.strong_rand_bytes(4)daje 4 losowe bajty z generatora systemu, czytane jako liczbavalue.- Gdy
valuejest mniejsze niżlimit, wynikiem jest reszta z dzielenia przezn— wtedy każda znwartości wypada dokładnie tyle samo razy. - W przeciwnym razie losujemy od nowa. Przy 52 kartach zdarza się to mniej więcej raz na 90 milionów losowań.
Tasowanie i rzuty
- Talia jest tasowana metodą Fishera–Yatesa: od ostatniej karty do pierwszej każdą zamieniamy z kartą wylosowaną tą funkcją spośród jeszcze nieprzetasowanych. Dzięki temu każda kolejność talii jest tak samo możliwa.
- Kości to po prostu liczby od 1 do 6 z tej samej funkcji, każdy rzut osobno.
- Worek liter i kamienie tasujemy tak samo jak talię.
Co to znaczy, a czego nie
Wylosowane wartości zapisujemy w dzienniku partii, więc powtórka pokazuje dokładnie to, co się wydarzyło. Ta strona opisuje, jak losujemy — nie daje sposobu, by samemu sprawdzić przebieg konkretnej partii. Jeśli coś w grze wydaje Ci się podejrzane, napisz do nas: Napisz do nas przez formularz kontaktu..
