Mengapakah `rand() % 14` Hanya Menjana 6 dan 13 pada Platform Apple?

Susan Sarandon
Lepaskan: 2024-11-26 04:53:13
asal
640 orang telah melayarinya

Why Does `rand() % 14` Only Generate 6 and 13 on Apple Platforms?

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:

  1. 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.
  2. 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.
  3. 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!

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