Langsung ke konten utama

Lempar Koin & Putar Roda gratis

Balik koin virtual, putar roda yang dapat disesuaikan, atau pilih secara acak dari daftar opsi. Menggunakan pengacakan aman secara kriptografi dari browser Anda β€” bukan undian publik yang dapat diverifikasi, jadi hindari kontes yang diatur.

Berfungsi offline setelah dimuat

πŸ”’ Ketiga-tiganya menggunakan generator angka acak yang aman secara kriptografi dari browser Anda: hasilnya dipilih terlebih dahulu, kemudian dianimasikan β€” koin adalah 50/50 sejati, roda diputar ke hasil yang sudah dipilih, dan pemilih tidak bias. Tidak ada yang meninggalkan perangkat Anda. Ini adil untuk penggunaan santai, tetapi bukan undian publik yang dapat diverifikasi, jadi hindari kontes yang diatur atau keputusan bernilai tinggi.

Penggunaan umum

  • Lempar Koin untuk Membuat KeputusanGunakan pelemparan koin virtual yang adil untuk membuat keputusan cepat dan tidak bias saat Anda ragu antara dua opsi.
  • Putar Roda untuk Penugasan Tim AcakGunakan roda yang dapat disesuaikan untuk secara acak menetapkan anggota tim ke tugas, peran, atau grup.
  • Pemilih Siswa Acak untuk Ruang KelasGunakan roda atau pemilih opsi untuk secara acak memanggil siswa, menetapkan kelompok, atau memilih sukarelawan.
  • Pelemparan Koin Virtual untuk OlahragaLempar koin yang adil untuk menentukan sisi tim, kepemilikan pertama, urutan servis, atau keputusan olahraga lainnya.
  • Pemilih Acak untuk HadiahPilih pemenang acak dari daftar entri menggunakan Pemilih Opsi - transparan dan adil.

Cara kerja

Ketiga mode β€” lempar koin, putar roda, dan pemilih opsi β€” menggunakan Web Crypto API bawaan browser (crypto.getRandomValues) untuk menghasilkan hasil kemenangan, lalu menjalankan animasi sepenuhnya di sisi klien dengan transformasi CSS dan requestAnimationFrame. Tidak ada server yang terlibat di titik mana pun.

  1. 1
    Web Crypto memilih pemenang
    Sebelum animasi apa pun dimulai, crypto.getRandomValues mengisi Uint32Array dengan bilangan bulat 32-bit acak secara kriptografis. Operasi modulo memetakannya ke jumlah opsi (2 untuk angka/gambar, N untuk roda atau pemilih), sehingga setiap hasil memiliki probabilitas yang persis sama.
  2. 2
    Sudut rotasi dihitung untuk mendarat pada hasil
    Untuk koin, kode menghitung rotasi tambahan terpendek (di atas sudut kumulatif saat ini) yang berakhir dengan sisi yang benar di atas β€” angka pada 0Β°, gambar pada 180Β° β€” lalu menambahkan 5 putaran penuh agar terlihat seperti lemparan sungguhan. Roda melakukan hal yang sama: menemukan offset sudut yang membawa irisan pemenang ke bawah penunjuk, menambahkan 6 rotasi penuh, dan menerapkan sedikit jitter acak sehingga penunjuk tidak selalu berhenti tepat di tengah irisan.
  3. 3
    Transisi CSS dan requestAnimationFrame menjalankan animasi
    Koin dan roda beranimasi via transformasi CSS dengan kurva easing cubic-bezier diterapkan ke satu nilai rotasi kumulatif β€” tidak ada JavaScript per-frame yang diperlukan setelah sudut ditetapkan. Pemilih opsi menggunakan requestAnimationFrame sebagai gantinya: setiap frame, interval yang tumbuh kuadratik menentukan apakah akan memajukan sorotan, menghasilkan perlambatan gaya mesin-slot yang selalu berhenti pada pemenang yang telah ditentukan sebelumnya.
  4. 4
    Hasil diungkap dan dicatat ke riwayat sesi
    Sebuah setTimeout dipicu saat animasi selesai (1,3 d untuk koin, 4,3 d untuk roda) dan menulis hasil ke state. Mode koin menyimpan riwayat sesi berjalan hingga 24 lemparan dengan jumlah angka/gambar. Pengguna dengan prefers-reduced-motion aktif melewati animasi sepenuhnya dan langsung melihat hasilnya.

Alat terkait

Pertanyaan yang sering diajukan