Cara Memilih Pemenang Undian Secara Adil dan Transparan
Untuk memilih pemenang secara adil, gunakan generator yang dirancang untuk keamanan, beri setiap peserta peluang yang sama, dan biarkan orang lain memeriksa hasilnya setelah undian selesai. Sebagian besar ketidakadilan pada pemilih acak sederhana berasal dari dua hal: sumber keacakan yang lemah, atau kesalahan aritmetika kecil yang disebut bias modulo. Keduanya bisa diperbaiki. Daftar peserta yang dipublikasikan dan catatan undian adalah bukti terbaik bahwa tidak ada pihak yang memilih pemenangnya.
Pengacak undianMemilih pemenang secara adilPakai gratisAcak sejati dan pseudo-acak
Sumber acak sejati mengambil ketidakpastiannya dari proses fisik, misalnya noise elektronik. Generator pseudo-acak adalah sebuah rumus. Ia mulai dari sebuah seed, menjalankan langkah-langkah deterministik, dan menghasilkan urutan yang tampak acak. Urutan itu sepenuhnya ditentukan oleh seed, jadi siapa pun yang mengetahui seed dan rumusnya dapat memprediksi setiap angka.
Sebagian besar perangkat lunak memakai generator pseudo-acak, dan itu sudah cukup untuk mengacak daftar putar atau membuat level game secara acak. Untuk undian yang memberi hadiah, pertanyaannya adalah apakah seseorang bisa memprediksi atau memengaruhi hasilnya. Generator yang cepat tetapi mudah diprediksi adalah alat yang salah untuk keperluan ini.
Gunakan generator kriptografis bawaan browser
Di JavaScript, Math.random() adalah generator pseudo-acak yang cepat. Dokumentasinya menyebutkan bahwa fungsi ini tidak cocok untuk kriptografi, dan undian hadiah termasuk pilihan yang sensitif dari sisi keamanan. Fungsi Web Crypto crypto.getRandomValues() mengisi sebuah array dengan nilai dari sumber acak kriptografis sistem operasi. Itulah yang sebaiknya dipakai. Pengacak acak memakainya untuk setiap pilihan, termasuk lempar koin dan dadu. Pemilih yang tidak menjelaskan apa yang dipakainya akan sulit dipercaya, jadi tanyakan dulu sebelum mengandalkannya.
Bias modulo, dengan satu contoh
Misalkan sumbermu menghasilkan satu byte acak, yaitu bilangan bulat dari 0 sampai 255, dan kamu ingin memilih satu dari tiga peserta. Cara yang paling mudah adalah mengambil sisa hasil bagi dengan 3. Cara ini terlihat adil, tetapi 256 tidak bisa dibagi habis menjadi kelompok berisi tiga.
- Nilai 0, 3, 6 dan seterusnya sampai 255 memberi sisa 0. Jumlahnya ada 86.
- Nilai yang memberi sisa 1 berjumlah 85, dan nilai yang memberi sisa 2 juga berjumlah 85.
Dengan demikian, peserta 0 muncul 86 kali dari 256, sekitar 33,6%, sedangkan peserta 1 dan 2 masing-masing muncul 85 kali, sekitar 33,2%. Selisihnya kecil, tetapi nyata, dan akan membesar ketika jumlah peserta menjadi besar dibandingkan dengan rentang nilai sumbernya.
Solusinya adalah rejection sampling. Ambil sebuah nilai, dan jika nilai itu jatuh di bagian sisa yang tidak rata, ambil lagi. Untuk contoh byte tadi, kamu menolak 255 dan hanya menerima 0 sampai 254, yang bisa dibagi habis menjadi tiga. Dengan bilangan acak 32-bit, sisa yang tidak rata hanya sekitar satu nilai dari 4,3 miliar, sehingga biasnya dapat diabaikan untuk giveaway. Meski begitu, pemilih yang teliti tetap menanganinya, karena kesalahan yang sama menjadi makin parah ketika rentangnya mengecil.
Undian tanpa pengulangan
Jika kamu membutuhkan beberapa pemenang, mengambil indeks acak tiga kali bisa saja memilih peserta yang sama dua kali. Ada dua cara bersih untuk menghindarinya:
- Hapus setiap pemenang dari daftar, lalu lakukan pengacakan lagi dari sisa daftar.
- Acak seluruh daftar sekali dengan metode Fisher–Yates, lalu ambil pemenang dari urutan paling atas.
Fisher–Yates menelusuri daftar dari belakang, menukar setiap posisi dengan posisi acak di posisi itu atau sebelumnya, dan menghasilkan setiap urutan dengan peluang yang sama jika pilihan acaknya adil. Metode ini singkat, sudah banyak dipahami, dan mudah dijelaskan kepada peserta. Opsi Hapus pemenang dan Tanpa pengulangan pada pemilih menangani kedua metode tersebut.
Buat undian bisa diperiksa
Undian yang adil adalah undian yang bisa diverifikasi siapa pun. Sebelum undian:
- Publikasikan daftar peserta dalam bentuk bernomor, beserta aturan tentang siapa saja yang memenuhi syarat.
- Publikasikan sidik jari SHA-256 dari daftar tersebut. Alat SHA-256 mana pun bisa membuatnya, misalnya generator hash. Sidik jari akan berubah total jika satu peserta saja berubah, sehingga daftar tidak bisa diubah diam-diam setelahnya. Pemeriksaan yang sama juga berlaku untuk unduhan; cara memeriksa checksum SHA-256 unduhan menjelaskan langkah-langkahnya.
Selama dan sesudah undian:
- Rekam layar sejak kamu mulai menjalankan pemilih sampai hasil yang ditampilkan.
- Publikasikan daftar akhir beserta nomor pemenangnya, supaya orang bisa menghitung ulang sidik jari dan memastikan tidak ada yang berubah.
- Jelaskan bagaimana pemenang dipilih, misalnya "dipilih dengan pemilih berbasis browser yang memakai sumber acak kriptografis sistem operasi".
Aturan giveaway berbeda-beda di setiap platform, dan undian hadiah bisa memiliki persyaratan hukum yang bergantung pada tempat tinggalmu. Periksa aturan promosi platform dan hukum setempat sebelum menyelenggarakannya. Ini adalah panduan umum, bukan nasihat hukum. Jika sudah siap, pilih pemenang dengan pengacak acak.
Cara melakukannya dengan fixmint
- Pilih Nama, lalu tempelkan peserta ke kolom Nama, satu per baris.
- Atur Pemenang sesuai jumlah hadiah. Centang Hapus pemenang dari daftar agar tidak ada yang bisa menang dua kali.
- Untuk undian bernomor, pilih Angka, atur Terkecil dan Terbesar, lalu centang Tanpa pengulangan jika setiap nomor hanya boleh menang sekali.
- Tekan Pilih pemenang, dengan rekaman layarmu sudah berjalan sejak awal.
- Publikasikan daftar peserta bernomor, sidik jari SHA-256, peserta yang menang, dan cara pemilih digunakan.
Jawaban singkat
Apakah Math.random() cukup untuk giveaway?
Cukup untuk permainan dan pengacakan, tetapi tidak untuk undian yang akan diperiksa orang, karena hasilnya bisa diprediksi. Gunakan sumber kriptografis.
Mengapa tidak langsung mengambil bilangan acak modulo jumlah peserta?
Jika rentangnya tidak bisa dibagi habis, sisanya menjadi tidak rata, sehingga sebagian peserta punya peluang sedikit lebih besar. Rejection sampling menghilangkan bias itu.
Bisakah saya memilih beberapa pemenang dari satu undian?
Bisa. Hapus setiap pemenang sebelum pemilihan berikutnya, atau acak sekali lalu ambil peserta teratas. Dengan cara apa pun, tidak ada peserta yang bisa menang dua kali.
Diterjemahkan dari Asli dalam bahasa Inggris dengan bantuan AI.
Komentar
Belum ada komentar. Jadilah yang pertama.


