1. Fiecare rezultat vine dintr-un generator criptografic de numere aleatorii
Spinvolta extrage rezultatele cu crypto.getRandomValues(), generatorul criptografic sigur de numere aleatorii integrat în orice browser și sistem de operare modern — aceeași sursă folosită pentru cheile de criptare. Nu folosim niciodată Math.random() ca să decidem ceva. (Lucrurile pur decorative, cum ar fi unde zboară o bucățică de confetti, au voie.)
2. Fără distorsiune de modulo
Un număr aleatoriu pe 32 de biți nu se poate împărți întotdeauna corect la, să zicem, 7 opțiuni: 4.294.967.296 nu se divide la 7, așa că varianta naivă număr % 7 face unele opțiuni puțin mai probabile. Spinvolta folosește eșantionare prin respingere: dacă un număr cade în restul inegal din vârful intervalului, e aruncat și se extrage altul. Astfel, fiecare opțiune are exact aceeași șansă, oricâte opțiuni ar fi.
3. Ponderile sunt exacte
În modul ponderat, ponderi precum 1, 2,5 sau 0,125 sunt transformate în numere întregi pe o scară comună și adunate exact. O singură tragere uniformă peste total alege câștigătorul, deci o opțiune cu ponderea 2 este exact de două ori mai probabilă decât una cu ponderea 1 — iar mărimea sectoarelor de pe roată arată exact aceste șanse.
4. Mai mulți câștigători fără repetare
Mai mulți câștigători, echipele, ordinea aleatorie, amestecarea cărților și concursurile folosesc o amestecare Fisher-Yates nepărtinitoare (cu aceeași eșantionare prin respingere), așa că fiecare ordine sau grup de câștigători posibil e la fel de probabil.
5. Întâi rezultatul, apoi animația
Când apeși Învârte, câștigătorul e stabilit înainte ca roata să se miște. Apoi un calculator de traiectorie găsește o mișcare — avântul, viteza, numărul de ture, leagănul blând de la final — care aterizează exact în sectorul câștigător, într-un punct aleatoriu departe de margini. Un bobârnac mai puternic, o învârtire mai lungă sau oprirea manuală schimbă doar aspectul. Testele noastre automate rulează mii de învârtiri aleatorii ca să se asigure că animația aterizează mereu pe rezultatul extras dinainte și nu alunecă niciodată la vecin.
6. Extrageri demonstrabil corecte pentru concursuri și camere
La concursuri (și la orice extragere în care încrederea contează), Spinvolta merge mai departe, ca să nu fie nevoie să ne crezi nici pe noi, nici pe organizator:
- Înainte de extragere, browserul tău blochează lista exactă de participanți și setările și publică o amprentă — un hash SHA-256 al listei, al setărilor și al unui seed secret. Serverul nostru înregistrează momentul în care a primit-o.
- Amprenta indică o rundă viitoare a farului de aleatoriu drand League of Entropy — o valoare publică produsă la fiecare trei secunde de organizații independente din toată lumea, pe care nimeni nu o poate prezice sau alege.
- Când apare acea rundă, câștigătorii sunt calculați din amprentă, valoarea farului și seed.
- Pagina dovezii arată totul. Oricine poate apăsa Verifică ca să recalculeze totul în propriul browser, inclusiv semnătura criptografică a farului.
Organizatorul nu poate alege câștigătorul, pentru că valoarea farului nu exista când lista a fost blocată. Nici noi, pentru că nu vedem niciodată seed-ul înainte ca amprenta să fie blocată și nu controlăm drand. Dacă farul nu e accesibil, extragerea trece la un mod de angajament și dezvăluire, marcat clar.
7. Testat statistic
Suita noastră de teste rulează teste chi-pătrat pe sute de mii de extrageri simulate la fiecare modificare, iar în varianta completă pe peste un milion: extrageri uniforme, ponderate, amestecări și poziții pentru mai mulți câștigători. Poți rula propria versiune pe pagina test de corectitudine.
Ce nu putem dovedi
La o învârtire obișnuită ai încredere că codul din browserul tău e cel pe care îl descriem. Rulează integral pe dispozitivul tău și îl poți inspecta cu instrumentele pentru dezvoltatori ale browserului. Când miza e mai mare — premii, extrageri publice — folosește o extragere demonstrabil corectă, în care nu trebuie să ai încredere în nimeni.
Întrebări frecvente
Poate fi trucată roata?
Nu prin animație: rezultatul e mai întâi extras corect, iar mișcarea e calculată doar ca să-l arate. Șansele pot fi schimbate doar în modul ponderat, care afișează eticheta „Roată ponderată” și desenează sectoarele la scară.
De ce a ieșit același nume de două ori la rând?
Pentru că întâmplarea reală are serii. Cu 10 opțiuni, aceeași iese de două ori la rând în 10 % din cazuri. Folosește modul eliminare dacă vrei ca fiecare opțiune să iasă o singură dată.
Ce este drand?
drand este un far distribuit de aleatoriu operat de League of Entropy, un grup de universități, companii și organizații independente. Publică o nouă valoare aleatorie verificabilă la câteva secunde.