Rand() % 14 Penjana Mengembalikan Nilai Terhad
Dalam program baru-baru ini, pembangun menghadapi masalah di mana rand() % 14 ekspresi secara konsisten menghasilkan nilai hanya 6 atau 13. Walaupun cuba melaksanakan kod berkali-kali, hasilnya tetap konsisten. Masalahnya terletak pada sifat penjana nombor rawak yang digunakan oleh MCG Apple.
Seperti yang dijelaskan oleh Wikipedia, pengganda MCG bagi 16807 boleh dibahagikan dengan 7. Ini bermakna nombor rawak pertama yang dijana selepas srand() akan hanya mempunyai satu bit entropi apabila diambil modulo 14, menghasilkan julat nilai yang terhad. Kekurangan ini dikaitkan dengan penjana nombor rawak berkualiti rendah yang digunakan oleh Apple.
Penyelesaian mudah untuk isu ini ialah menggunakan rand() beberapa kali selepas srand() dan membuang hasil awal. Ini akan meningkatkan entropi nombor yang dijana dan menyelesaikan isu output nilai terhad.
Atas ialah kandungan terperinci Mengapakah `rand() % 14` Mengembalikan Nilai Terhad pada MCG Apple?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!