Kekeliruan penjudi adalah bias kognitif di mana kita secara keliru mengharapkan hal-hal yang sering terjadi lebih kecil kemungkinannya terjadi di masa depan dan hal-hal yang tidak terjadi dalam beberapa saat untuk lebih mungkin terjadi segera. Tugas Anda adalah mengimplementasikan versi spesifik ini.
Penjelasan Tantangan
Tulis fungsi yang mengembalikan bilangan bulat acak antara 1 dan 6, inklusif. Tangkapan: pertama kali fungsi dijalankan, hasilnya harus seragam (dalam 1%), namun, setiap panggilan berikutnya akan condong ke nilai yang telah digulirkan lebih sedikit kali sebelumnya. Rincian spesifiknya adalah sebagai berikut:
- Die mengingat jumlah angka yang dihasilkan sejauh ini.
- Setiap hasil ditimbang dengan rumus berikut:
- Misalnya, jika jumlah roll sejauh ini adalah , bobotnya adalah , artinya Anda akan menjadi 4 kali lebih mungkin untuk menggulung dari .
- Perhatikan bahwa rumus tersebut berarti bahwa hasil gulungan ditimbang sama dengan
Aturan dan Asumsi
- Aturan I / O standar dan celah terlarang berlaku
- Gulungan die tidak boleh bersifat deterministik. (yaitu menggunakan PRNG yang diunggulkan dari sumber yang mudah menguap, seperti biasanya tersedia sebagai builtin.)
- Sumber acak Anda harus memiliki periode setidaknya 65535 atau benar-benar acak.
- Distribusi harus dalam 1% untuk berat hingga 255
- RNG 16-bit cukup baik untuk memenuhi kedua persyaratan di atas. Sebagian besar RNG built-in sudah cukup.
- Anda dapat meneruskan distribusi saat ini selama distribusi tersebut dimutasi oleh panggilan atau distribusi post-roll dikembalikan bersama dengan die roll. Memperbarui distribusi / jumlah adalah bagian dari tantangan ini .
- Anda dapat menggunakan bobot alih-alih menghitung. Saat melakukannya, setiap kali berat turun ke 0, semua bobot harus naik 1 untuk mencapai efek yang sama dengan jumlah penyimpanan.
- Anda bisa menggunakan bobot ini sebagai pengulangan elemen dalam array.
Semoga berhasil. Semoga byte selalu menguntungkan Anda.