Rumah > pembangunan bahagian belakang > C++ > Mengapakah `rand() % 14` Mengembalikan Nilai Terhad pada MCG Apple?

Mengapakah `rand() % 14` Mengembalikan Nilai Terhad pada MCG Apple?

Mary-Kate Olsen
Lepaskan: 2024-11-28 00:20:10
asal
615 orang telah melayarinya

Why Does `rand() % 14` Return Limited Values on Apple's MCG?

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan