Asumsikan file data dengan 80+ juta yang dan nol, dihasilkan secara acak.
Dari file ini, kami ingin membuat daftar bilangan bulat desimal acak.
Ini adalah rencana untuk melakukan konversi ini.
- Membagi 80 juta digit menjadi pengelompokan 4 digit biner.
- Ubah setiap biner 4 digit menjadi desimal.
- Buang semua nilai desimal lebih besar dari 9.
Ini akan menghasilkan string bilangan bulat acak dari 0-9
Inilah kekhawatirannya. 24 digit biner yang terdiri dari 6 pengelompokan dari 4 digit biner yang sesuai dengan nilai 10 hingga 15 berisi 17 angka dan hanya 7 angka nol. Apakah ketidakseimbangan ini mempengaruhi distribusi bilangan bulat bahkan vs ganjil, atau kompromi keacakan string akhir angka desimal dengan cara apa pun?
Pembaruan: Dari jawaban yang diposting, tampaknya metode yang disebutkan di atas adalah suara. Saya setuju dengan kesimpulan itu. Namun, saya masih tidak mengerti mengapa menghapus yang lebih dari dua kali lebih banyak daripada nol dari string biner tidak bias hasilnya ke angka ganjil yang lebih sedikit. Saya mencari penjelasan.
sumber
Jawaban:
Mari berhitung dan lihat. Dengan membangun file, semua string 4-bit kemungkinan sama. Ada 16 string semacam itu. Di sini mereka:
Prosedur Anda membuang string 10 hingga 15. Jadi dalam kasus yang benar-benar Anda gunakan, Anda akan memilih 0 hingga 9, yang masing-masing kemungkinan sama, seperti yang diinginkan. Dan kita tahu digit desimal yang dihasilkan tidak tergantung satu sama lain karena masing-masing menggunakan string terpisah 4 bit dan semua bit independen. Prosedur Anda merupakan jenis sampel penolakan sederhana .
sumber
Tidak ada bias karena Anda hanya mensimulasikan beberapa nilai yang dibuang dan semua nilai termasuk yang disimpan dihasilkan dengan probabilitas yang sama:
Kode R untuk grafik di atas adalah
sumber