Wybierz kształt losowania
Wybór zależy głównie od tego, jak wynik musi wyglądać dla osób, które na niego patrzą.
Liczba albo zestaw liczb — generator liczb losowych dla zdefiniowanego przez Ciebie zakresu, liczby lotto dla piętnastu gier z ustalonymi zasadami, kości, gdy potrzebujesz notacji kości i modyfikatorów zamiast płaskiego zakresu.
Jeden zwycięzca z listy — wybór imienia/nazwiska, gdy chcesz po prostu wynik, koło fortuny, gdy widownia patrzy, a dramaturgia jest właśnie po to.
Tak albo nie — rzut monetą.
Wszyscy podzieleni na grupy — generator drużyn, który rozdziela metodą round-robin, więc 7 osób na 3 grupy wychodzi jako 3/2/2, zamiast wrzucania reszty do ostatniej grupy.
Gra rozgrywana w czasie — prowadzący bingo, 75, 90 albo 99 kul, sterowany z jednego ekranu.
Sprawdzanie cudzego losowania — weryfikator losowania, jedyne narzędzie tutaj, które niczego nie generuje.
Co odróżnia tę kategorię
Każda strona potrafi wygenerować losową liczbę. Trudniejszym problemem jest wygenerowanie takiej, którą sceptyczny uczestnik zaakceptuje później, a to łańcuch przechodzący przez wszystkie narzędzia tutaj, a nie funkcja pojedynczego z nich.
Działa to tak. Uruchamiasz losowanie z ziarnem (seed) — wartością, którą wybierasz sam, albo którą narzędzie losuje i pokazuje Ci. Ziarno sprawia, że losowanie jest odtwarzalne: każdy, kto zna ziarno i tę samą listę, otrzyma ten sam wynik, za każdym razem. Samo w sobie to za mało, bo organizator mógłby uruchamiać losowania z różnymi ziarnami, aż jedno wypadnie wygodnie, i opublikować tylko to jedno ziarno.
Dlatego losowanie otrzymuje też odcisk palca (fingerprint) listy, na której zostało przeprowadzone. Opublikowanie ziarna i odcisku palca przed losowaniem zobowiązuje Cię jednocześnie do uczestników i do metody. Później każdy może wkleić certyfikat do weryfikatora, który przelicza wynik i sprawdza, czy ziarno, lista i rezultat są ze sobą zgodne. Zmień imię, dodaj spóźnione zgłoszenie albo podmień zwycięzcę, a odcisk palca przestanie się zgadzać.
To nie dowodzi, że organizator jest uczciwy. Dowodzi, że to losowanie, na tej liście, dało ten wynik — co wcześniej było niemożliwe do sprawdzenia przez kogokolwiek innego.
Kiedy nie chcesz ziarna
Zostaw ziarno puste, a losowanie skorzysta z crypto.getRandomValues()
zamiast tego: entropii Twojego systemu operacyjnego, a nie odtwarzalnej
sekwencji. To właściwy wybór dla wszystkiego, gdzie odtwarzalność byłaby wadą,
a nie zaletą — wybór hasła, podział rachunku albo rozstrzygnięcie sporu. Nikt
nie musi kontrolować, które z was myje naczynia.
Dlaczego losowanie w przeglądarce bije fizyczny przedmiot
Prawdziwa moneta jest odrobinę obciążona sposobem, w jaki wytłoczono jej strony, i pada tak, jak zaczynała, marginalnie częściej niż nie. Tania kostka do gry jest gorsza: formowane oczka usuwają różną ilość materiału z każdej ściany, więc strona z szóstką jest odrobinę lżejsza. Żadne z tych obciążeń nie ma znaczenia w grze planszowej i żadnego nie da się usunąć samą starannością.
Losowanie obliczone z puli entropii systemu operacyjnego nie dziedziczy żadnej fizycznej asymetrii. To nie jest „tak dobre jak” prawdziwa moneta — pod względem uczciwości jest lepsze.