Jak koło pozostaje uczciwe
O każdym zakręceniu decyduje kryptograficzny generator liczb losowych twojej przeglądarki, zanim koło zacznie się obracać. Nic, co wpiszesz, nie jest do nas wysyłane. Ta strona wyjaśnia metodę i pokazuje najnowszy automatyczny audyt.
Jak wybierany jest zwycięzca
Zwycięzca jest losowany za pomocą crypto.getRandomValues, tego samego kryptograficznie bezpiecznego generatora, którego przeglądarki używają do kluczy szyfrujących.
Losowe liczby 32-bitowe są zamieniane na pozycję na kole metodą próbkowania z odrzuceniem: liczba, która sprawiłaby, że niektóre wpisy byłyby nieco bardziej prawdopodobne od innych, jest odrzucana i losowana ponownie. Eliminuje to niewielkie obciążenie, które powstaje przy prostym braniu reszty z dzielenia.
Najpierw wybierany jest zwycięzca. Potem animacja obraca koło tak, by zatrzymało się w polu zwycięzcy, w losowym miejscu z dala od jego krawędzi.
Wagi
Wpis zapisany jako Pizza*3 ma trzy razy większą szansę na wygraną niż wpis o wadze 1, a jego pole jest trzy razy szersze. Wagi mogą być liczbami całkowitymi lub ułamkami dziesiętnymi od 0,001 do 1 000 000.
Weryfikowalne losowania
Przy rozdaniach nagród i konkursach weryfikowalne losowanie pozwala każdemu sprawdzić po fakcie, że wynik nie został zmieniony.
- Przed zakręceniem strona tworzy tajne ziarno i pokazuje skrót SHA-256 tego ziarna, wpisów i czasu. Opublikuj skrót, na przykład na czacie transmisji, zanim zakręcisz.
- Zakręcenie korzysta z generatora zbudowanego z tajnego ziarna, więc ziarno i wpisy w pełni wyznaczają zwycięzcę.
- Po zakręceniu strona ujawnia ziarno w potwierdzeniu losowania. Każdy może wkleić potwierdzenie na stronie weryfikacji, która sprawdza skrót i ponownie wylicza zwycięzcę.
Dokładna metoda
Skrót to SHA-256 następującego tekstu w UTF-8: wiersz nagłówka, czas zatwierdzenia, ziarno, a następnie po jednym wierszu na każdy wpis z jego wagą, tabulatorem i etykietą.
weeks-and-random-draw v1
committed_at: 2026-10-16T14:05:09.123Z
seed: 64 hexadecimal characters
3 Pizza
1.5 Sushi
- Ziarno to 32 losowe bajty z crypto.getRandomValues, zapisane jako 64 małe znaki szesnastkowe.
- Generator tworzy liczby 32-bitowe z SHA-256(bajty ziarna, a po nich 4-bajtowy licznik w kolejności big-endian) dla licznika 0, 1, 2 i tak dalej, odczytując każdy 32-bajtowy skrót jako osiem liczb w kolejności big-endian.
- Jeśli każda waga jest liczbą całkowitą, a suma wag wynosi najwyżej 2^32, losowanie bierze kolejną liczbę 32-bitową, pomija ją, dopóki jest co najmniej równa 2^32 − (2^32 mod suma), i zachowuje resztę z jej dzielenia przez sumę.
- W przeciwnym razie bierze dwie kolejne liczby 32-bitowe a i b i oblicza ((a >> 5) × 2^26 + (b >> 6)) ÷ 2^53, czyli liczbę od 0 włącznie do 1 wyłącznie, a następnie mnoży ją przez sumę wag.
- Zwycięzcą jest pierwszy wpis, którego narastająca suma wag jest większa od tej liczby.
Weryfikowalne losowanie dowodzi, że wpisy i wynik nie zostały zmienione po opublikowaniu skrótu. Nie powstrzyma jednak organizatora przed utworzeniem po cichu kilku skrótów i opublikowaniem tylko tego, który mu odpowiada, dlatego opublikuj skrót przed zamknięciem zgłoszeń i utwórz tylko jeden.
Sprawdź potwierdzenie losowania
Najnowszy audyt
Te testy uruchamiają się przy każdej zmianie na stronie. Ostatnie uruchomienie: 19 października 2026 18:31.
Wszystkie testy zakończyły się powodzeniem.
| Scenariusz | Zakręcenia | Chi-kwadrat | Stopnie swobody | Wartość p | Wynik |
|---|---|---|---|---|---|
| 2 równe wpisy | 1 000 000 | 0,86 | 1 | 0,3544 | Zaliczony |
| 7 równych wpisów | 1 000 000 | 3,42 | 6 | 0,7549 | Zaliczony |
| 100 równych wpisów | 1 000 000 | 125,45 | 99 | 0,0375 | Zaliczony |
| 1000 równych wpisów | 1 000 000 | 1081,73 | 999 | 0,0346 | Zaliczony |
| Tryb usuwania zwycięzcy, 7 wpisów, każda pozycja | 999 999 | 41,72 | 36 | 0,2360 | Zaliczony |
| Tryb bez powtórzeń, 7 wpisów, każda pozycja | 999 999 | 39,90 | 36 | 0,3007 | Zaliczony |
| Wagi | Zakręcenia | Największa różnica | Wynik |
|---|---|---|---|
| 1, 2, 3, 4 | 1 000 000 | 0,030 pkt proc. | Zaliczony |
| 0.5, 1.5, 3, 0.25 | 1 000 000 | 0,050 pkt proc. | Zaliczony |
10 000 z 10 000 losowych zakręceń zatrzymało się na ogłoszonym zwycięzcy.
10 000 z 10 000 losowo wygenerowanych potwierdzeń zostało poprawnie przeliczonych, zarówno w przeglądarce, jak i przez niezależną implementację.
Wersja silnika koła: d828d1f5c0c3.