Koło Losowań
Wpisz opcje, zakręć kołem
Każdy wiersz w polu staje się wycinkiem koła. Naciśnij zakręć, koło się obraca i zwalnia, a wycinek pod wskaźnikiem wygrywa.
Nic nie jest wysyłane. Twoje wpisy istnieją w karcie przeglądarki i znikają po jej zamknięciu.
Zwycięzca jest wybrany, zanim koło się ruszy
To ma większe znaczenie, niż się wydaje.
Oczywistym sposobem zbudowania koła jest nadanie mu losowego pchnięcia, pozwolenie tarciu, żeby je spowolniło, i odczytanie tego, co ostatecznie znajdzie się pod wskaźnikiem. Takie podejście sprawia, że wynik zależy od zaokrąglenia końcowego kąta i od tego, ile klatek animacji zdążyło narysować Twoje urządzenie — powolny telefon i szybki komputer nie byłyby równie sprawiedliwe.
To koło działa odwrotnie. Najpierw losuje zwycięzcę z crypto.getRandomValues(),
a dopiero potem oblicza dokładny obrót, który umieści ten wycinek pod
wskaźnikiem, i animuje do niego. Obrót to tylko prezentacja; losowanie jest już
rozstrzygnięte i możliwe do udowodnienia jako jednostajne.
Każdy wycinek ma więc dokładnie taką samą szansę, niezależnie od tego, ile jest wycinków, jak długie są ich etykiety, ani na jakim urządzeniu pracujesz.
Usuwaj zwycięzcę albo kręć pełnym kołem dalej
Przy włączonym usuń zwycięzcę każde losowanie zdejmuje zwycięski wpis z koła. Kręć wielokrotnie, a dostaniesz kolejność: pierwszy, drugi, trzeci. Dobre do losowania kilku nagród albo do ustalania kolejności prezentacji na sali.
Przy wyłączonym koło pozostaje pełne, a ta sama opcja może wygrać dwa razy — co jest właśnie tym, czego chcesz przy „gdzie dziś zjemy kolację”.
Nadawanie wagi kołu przez powtórzenie wpisu
Koło daje każdemu wycinkowi taką samą szansę, więc sposobem na faworyzowanie opcji jest danie jej większej liczby wycinków. Wpisanie jej dwa razy podwaja jej udział.
| Wpisy | Wycinki | Szansa dla Pizzy |
|---|---|---|
| Pizza, Sushi, Tacos | 3 | 33% |
| Pizza, Pizza, Sushi, Tacos | 4 | 50% |
| Pizza ×3, Sushi, Tacos | 5 | 60% |
Powielone etykiety pojawiają się na kole więcej niż raz, co jest uczciwe — każdy patrzący może policzyć wycinki i sam zobaczyć wagę, zamiast wierzyć Ci na słowo. Ta widoczność jest sensem koła; ukryta waga by go unieważniła.
Dla precyzyjnych wag, które nie mieszczą się schludnie w wycinkach, generator
liczb losowych przyjmuje zamiast tego wprost pary liczba:waga.
Ile wycinków pozostaje czytelnych
Wycinki kurczą się wraz ze wzrostem liczby wpisów, a etykiety są rysowane wzdłuż promienia, więc istnieje praktyczny sufit dużo niższy niż jakikolwiek techniczny.
- Do 12 — komfortowo, etykiety czyta się od razu
- 12 do 20 — czytelnie, ale długie nazwy zaczynają się tłoczyć
- 20 do 30 — nadaje się tylko do krótkich etykiet
- Powyżej 30 — koło nadal działa, a losowanie jest nadal sprawiedliwe, ale nikt nie zdąży tego przeczytać podczas kręcenia
Etykiety dłuższe niż 18 znaków są przycinane wielokropkiem, żeby zmieściły się w swoim wycinku. Jeśli Twoja lista jest na tyle długa, że koło staje się nieczytelne, wybierak imion robi to samo bez tej oprawy.
Dostępność i ruch
Koło respektuje prefers-reduced-motion. Jeśli Twój system prosi o
ograniczenie ruchu, animacja kręcenia jest pomijana, a zwycięzca pojawia się
od razu. Wynik jest identyczny w obu przypadkach, bo losowanie nigdy nie
zależało od animacji.
Zwycięzca jest też ogłaszany w regionie live, więc czytniki ekranu odczytują go na głos, bez konieczności szukania przez użytkownika.
Do czego przydaje się koło do losowania
- Podejmowanie decyzji — obiad, film, który obowiązek domowy
- Transmisje na żywo i klasy szkolne — kręcenie jest samo w sobie atrakcją; ludzie to oglądają
- Losowania nagród — widoczne losowanie wydaje się widzom bardziej sprawiedliwe niż pojawiająca się liczba
- Lodołamacze — kto odpowiada na kolejne pytanie