Rand() % 14 Hanya Menjana Nilai 6 atau 13: Memecah Misteri
Isu yang anda hadapi timbul disebabkan oleh faktor yang wujud had dalam pelaksanaan fungsi rand() pada platform Apple, seperti yang dijelaskan dalam jawapan yang anda berikan. Dengan parameter lalai, penjana nombor rawak yang digunakan oleh rand() menghasilkan urutan yang mempunyai entropi terhad apabila dibahagikan dengan 14, menyebabkan ia berkitar antara dua nilai sahaja, 6 dan 13.
Untuk membetulkan isu ini, anda boleh mengambil langkah berikut:
-
Panggil Rand() Berbilang Kali Selepas Srand(): Seperti yang dicadangkan dalam jawapan, buang beberapa hasil pertama yang dihasilkan oleh rand() selepas memanggil srand(time(NULL)). Dengan berbuat demikian, anda menghapuskan kitaran awal yang menghasilkan hanya 6 dan 13.
-
Gunakan Penjana Nombor Rawak Berbeza: Jika kaedah di atas tidak menyelesaikan isu, pertimbangkan untuk menukar kepada yang lain penjana nombor rawak yang menyediakan entropi yang lebih baik, seperti Mersenne Twister. Anda boleh mencari penjana nombor rawak alternatif dalam perpustakaan C atau sebagai pelaksanaan yang berasingan.
-
Ubah suai Julat Nombor Rawak: Seperti yang anda nyatakan dalam suntingan, menukar julat rand() kepada 13 atau 15 membolehkannya berfungsi dengan betul. Ini kerana pendaraban 15 (cth., 752574) dan 13 (cth., 220379) tidak boleh dibahagikan dengan baki masing-masing. Walau bagaimanapun, menukar julat mungkin tidak sesuai untuk kes penggunaan khusus anda, terutamanya jika anda memerlukan nombor rawak antara 0 dan 13.
Dengan menangani masalah asas dengan penjana nombor rawak pada platform Apple, anda boleh memastikan bahawa rand() % 14 menghasilkan jujukan nilai yang lebih sekata antara 0 dan 13.
Atas ialah kandungan terperinci Mengapakah `rand() % 14` Hanya Menjana 6 dan 13 pada Platform Apple?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!