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.

  1. 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.
  2. Zakręcenie korzysta z generatora zbudowanego z tajnego ziarna, więc ziarno i wpisy w pełni wyznaczają zwycięzcę.
  3. 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
  1. Ziarno to 32 losowe bajty z crypto.getRandomValues, zapisane jako 64 małe znaki szesnastkowe.
  2. 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.
  3. 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ę.
  4. 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.
  5. 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.

Testy chi-kwadrat: test jest zaliczony, gdy jego wartość p przekracza 0,01.
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
Wpisy z wagami: udział każdego wpisu w wygranych musi mieścić się w granicach 0,5 punktu procentowego od jego wagi.
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.

Zaproponuj lepsze tłumaczenie

Widzisz na tej stronie błędne albo nienaturalne tłumaczenie? Napisz nam, jak powinno brzmieć. Każdą propozycję sprawdza człowiek, zanim cokolwiek zmienimy.