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 19:41.

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,50 1 0,4777 Zaliczony
7 równych wpisów 1 000 000 11,81 6 0,0664 Zaliczony
100 równych wpisów 1 000 000 82,72 99 0,8808 Zaliczony
1000 równych wpisów 1 000 000 963,97 999 0,7818 Zaliczony
Tryb usuwania zwycięzcy, 7 wpisów, każda pozycja 999 999 37,48 36 0,4012 Zaliczony
Tryb bez powtórzeń, 7 wpisów, każda pozycja 999 999 52,75 36 0,0354 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,040 pkt proc. Zaliczony
0.5, 1.5, 3, 0.25 1 000 000 0,051 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: eb92055d9167.

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.