1. Setiap keputusan datang daripada penjana rawak kriptografi
Spinvolta mencabut keputusan dengan crypto.getRandomValues(), penjana nombor rawak yang selamat secara kriptografi dan terbina dalam setiap pelayar dan sistem pengendalian moden — sumber yang sama untuk mencipta kunci penyulitan. Kami tidak pernah menggunakan Math.random() untuk menentukan apa-apa. (Perkara hiasan semata-mata, seperti arah terbang sekeping konfeti, boleh menggunakannya.)
2. Tiada bias modulo
Nombor rawak 32-bit tidak selalu boleh dibahagi sama rata kepada, katakan, 7 pilihan: 4,294,967,296 bukan gandaan 7, jadi cara naif number % 7 menjadikan sesetengah pilihan sedikit lebih berkemungkinan. Spinvolta menggunakan pensampelan penolakan: jika nombor jatuh dalam baki tidak sekata di hujung julat, ia dibuang dan nombor baharu dicabut. Setiap pilihan mempunyai peluang yang sama tepat, untuk sebarang bilangan pilihan.
3. Pemberat adalah tepat
Dalam mod berpemberat, pemberat seperti 1, 2.5 atau 0.125 ditukar kepada nombor bulat pada skala sepunya dan dijumlahkan dengan tepat. Satu cabutan seragam atas jumlah itu memilih pemenang, jadi pilihan berpemberat 2 tepat dua kali lebih berkemungkinan daripada yang berpemberat 1 — dan saiz bahagian roda menunjukkan peluang tepat itu.
4. Ramai pemenang tanpa ulangan
Ramai pemenang, pasukan, susunan rawak, kocokan kad dan peraduan menggunakan kocokan Fisher–Yates yang tidak berat sebelah (dengan pensampelan penolakan yang sama), jadi setiap susunan atau kumpulan pemenang yang mungkin sama berkemungkinan.
5. Keputusan dahulu, animasi kemudian
Apabila anda tekan Putar, pemenang ditentukan sebelum roda bergerak. Kemudian penyelesai mengira gerakan — tarikan ke belakang, kelajuan, bilangan pusingan, goyangan lembut di hujung — yang berhenti tepat di dalam bahagian pemenang, pada titik rawak jauh dari tepi. Kuisan lebih kuat, putaran lebih lama atau henti manual hanya mengubah rupa. Ujian automatik kami menyemak beribu-ribu putaran rawak untuk memastikan animasi sentiasa berhenti pada keputusan yang sudah dicabut dan tidak tergelincir ke bahagian jiran.
6. Cabutan adil yang boleh dibuktikan untuk peraduan dan bilik
Untuk peraduan (dan sebarang cabutan yang memerlukan kepercayaan), Spinvolta pergi lebih jauh supaya anda tidak perlu mempercayai kami atau hos:
- Sebelum cabutan, pelayar anda mengunci senarai penyertaan dan tetapan yang tepat dan menerbitkan cap jari — cincangan SHA-256 senarai, tetapan dan benih rahsia. Pelayan kami merekod bila ia diterima.
- Cap jari menamakan pusingan akan datang suar rawak drand League of Entropy — nilai awam yang dihasilkan setiap 3 saat oleh organisasi bebas di seluruh dunia, yang tidak boleh diramal atau dipilih sesiapa.
- Apabila pusingan itu diterbitkan, pemenang dikira daripada cap jari, nilai suar dan benih.
- Halaman bukti menunjukkan segalanya. Sesiapa boleh menekan Sahkan untuk mengira semula dalam pelayar sendiri, termasuk menyemak tandatangan kriptografi suar.
Hos tidak boleh memilih pemenang kerana nilai suar belum wujud semasa senarai dikunci. Kami juga tidak boleh, kerana kami tidak pernah melihat benih sebelum cap jari dikunci dan kami tidak mengawal drand. Jika suar tidak dapat dicapai, cabutan beralih kepada cabutan komit-dedah yang dilabel dengan jelas.
7. Diuji secara statistik
Suite ujian kami menjalankan ujian kebagusan penyuaian khi kuasa dua ke atas ratusan ribu cabutan simulasi pada setiap perubahan, dan lebih sejuta cabutan dalam suite penuh: pilihan seragam, pilihan berpemberat, kocokan dan kedudukan ramai pemenang. Anda boleh jalankan versi sendiri di halaman ujian keadilan.
Apa yang tidak dapat kami buktikan
Untuk putaran harian, anda mempercayai bahawa kod yang berjalan dalam pelayar ialah kod yang kami huraikan. Ia berjalan sepenuhnya di peranti anda, dan anda boleh memeriksanya dengan alat pembangun pelayar. Apabila taruhan lebih tinggi — hadiah, cabutan awam — guna cabutan adil yang boleh dibuktikan, yang tidak memerlukan kepercayaan kepada sesiapa.
Soalan lazim
Bolehkah roda ini ditipu?
Tidak melalui animasi: keputusan dicabut secara adil dahulu dan gerakan dikira untuk memaparkannya. Satu-satunya cara mengubah peluang ialah mod berpemberat, yang memaparkan lencana “Roda berpemberat” dan melukis saiz bahagian mengikut peluang.
Kenapa nama yang sama keluar dua kali berturut-turut?
Kerana kerawakan sebenar ada rentetan. Dengan 10 pilihan, pilihan yang sama keluar dua kali berturut-turut 10% daripada masa. Guna mod penyingkiran jika mahu setiap pilihan sekali sahaja.
Apakah drand?
drand ialah suar rawak teragih yang dikendalikan League of Entropy, kumpulan universiti, syarikat dan organisasi bebas. Ia menerbitkan nilai rawak baharu yang boleh disahkan setiap beberapa saat.