1. Setiap hasil berasal dari generator acak kriptografis
Spinvolta mengundi hasil dengan crypto.getRandomValues(), generator angka acak yang aman secara kriptografis dan sudah ada di setiap browser dan sistem operasi modern — sumber yang sama untuk membuat kunci enkripsi. Kami tidak pernah memakai Math.random() untuk menentukan apa pun. (Hal yang murni dekoratif, seperti arah terbang konfeti, boleh memakainya.)
2. Tanpa bias modulo
Angka acak 32-bit tidak selalu bisa dibagi rata ke, misalnya, 7 pilihan: 4.294.967.296 bukan kelipatan 7, jadi cara naif number % 7 membuat beberapa pilihan sedikit lebih mungkin. Spinvolta memakai rejection sampling: jika angka jatuh di sisa yang tidak rata di ujung rentang, angka itu dibuang dan diundi angka baru. Setiap pilihan jadi punya peluang yang persis sama, berapa pun jumlahnya.
3. Bobot itu presisi
Di mode berbobot, bobot seperti 1, 2,5, atau 0,125 diubah menjadi bilangan bulat pada skala yang sama dan dijumlahkan dengan tepat. Satu undian seragam atas totalnya memilih pemenang, jadi pilihan berbobot 2 tepat dua kali lebih mungkin daripada yang berbobot 1 — dan ukuran bagian di roda menunjukkan peluang tepat itu.
4. Banyak pemenang tanpa pengulangan
Banyak pemenang, tim, urutan acak, kocokan kartu, dan giveaway memakai Fisher–Yates yang tidak bias (dengan rejection sampling yang sama), sehingga setiap urutan atau kelompok pemenang yang mungkin sama peluangnya.
5. Hasil dulu, animasi kemudian
Saat kamu menekan Putar, pemenang ditentukan sebelum roda bergerak. Lalu solver menghitung gerakan — tarikan awal, kecepatan, jumlah putaran, goyangan halus di akhir — yang berhenti tepat di dalam bagian pemenang, di titik acak yang jauh dari tepi. Melempar lebih keras, memilih putaran lebih lama, atau berhenti manual hanya mengubah tampilan. Tes otomatis kami mengecek ribuan putaran acak untuk memastikan animasi selalu berhenti di hasil yang sudah diundi dan tidak pernah tergelincir ke tetangganya.
6. Undian adil yang bisa dibuktikan untuk giveaway dan ruang
Untuk giveaway (dan undian apa pun yang butuh kepercayaan), Spinvolta melangkah lebih jauh sehingga kamu tidak perlu percaya pada kami atau host:
- Sebelum undian, browser-mu mengunci daftar entri dan pengaturan yang persis dan menerbitkan sidik jari — hash SHA-256 dari daftar, pengaturan, dan seed rahasia. Server kami mencatat kapan menerimanya.
- Sidik jari menyebut satu babak mendatang dari beacon acak drand League of Entropy — nilai publik yang dihasilkan setiap 3 detik oleh organisasi independen di seluruh dunia, yang tidak bisa ditebak atau dipilih siapa pun.
- Saat babak itu terbit, pemenang dihitung dari sidik jari, nilai beacon, dan seed.
- Halaman bukti menampilkan semuanya. Siapa pun bisa menekan Verifikasi untuk menghitung ulang di browser mereka, termasuk mengecek tanda tangan kriptografis beacon.
Host tidak bisa memilih pemenang karena nilai beacon belum ada saat daftar dikunci. Kami pun tidak, karena kami tidak pernah melihat seed sebelum sidik jari dikunci dan kami tidak mengendalikan drand. Jika beacon tidak bisa dijangkau, undian beralih ke undian komit-ungkap yang diberi label jelas.
7. Diuji secara statistik
Rangkaian tes kami menjalankan uji goodness-of-fit chi-kuadrat atas ratusan ribu undian simulasi di setiap perubahan, dan lebih dari sejuta undian di rangkaian lengkap: pilihan seragam, pilihan berbobot, pengacakan, dan posisi banyak pemenang. Kamu bisa menjalankan versimu sendiri di halaman uji keadilan.
Yang tidak bisa kami buktikan
Untuk putaran sehari-hari, kamu percaya bahwa kode yang berjalan di browser-mu adalah kode yang kami jelaskan. Kode itu sepenuhnya berjalan di perangkatmu, dan bisa kamu periksa dengan developer tools browser. Saat taruhannya lebih tinggi — hadiah, undian publik — pakai undian adil yang bisa dibuktikan, yang tidak menuntut kepercayaan pada siapa pun.
Pertanyaan umum
Bisakah roda dicurangi?
Tidak lewat animasi: hasil diundi secara adil lebih dulu dan gerakan dihitung untuk menampilkannya. Satu-satunya cara mengubah peluang adalah mode berbobot, yang menampilkan lencana “Roda berbobot” dan menggambar ukuran bagian sesuai peluang.
Kenapa nama yang sama keluar dua kali berturut-turut?
Karena keacakan sungguhan punya rentetan. Dengan 10 pilihan, pilihan yang sama keluar dua kali berturut-turut 10% dari waktu. Pakai mode eliminasi jika ingin setiap pilihan hanya sekali.
Apa itu drand?
drand adalah beacon acak terdistribusi yang dijalankan League of Entropy, kelompok universitas, perusahaan, dan organisasi independen. Beacon ini menerbitkan nilai acak baru yang bisa diverifikasi setiap beberapa detik.