Memahami Kebolehramalan Urutan rand()
Pernyataan Masalah:
Dalam program yang menggunakan rand (), pengguna menghadapi jujukan nombor rawak yang konsisten merentasi berbilang larian, menjadikan keputusan muncul bukan rawak.
Jawapan:
Ketekalan dalam keputusan rand() berpunca daripada benih yang tidak diinisialisasi untuk penjana nombor rawak. Secara lalai, rand() menggunakan benih yang sama pada setiap pelaksanaan program, yang membawa kepada jujukan nombor yang boleh diramal.
Penyelesaian:
Untuk menangani isu ini, atur cara harus memulakan benih menggunakan nilai yang benar-benar rawak. Satu pendekatan biasa ialah menggunakan fungsi srand() dengan argumen berdasarkan masa sistem:
srand((unsigned int)time(NULL));
Tugasan ini memastikan benih berubah dengan setiap program dijalankan, menghasilkan lebih banyak jujukan nombor rawak.
Penjelasan Teknikal:
Fungsi rand() beroperasi sebagai penjana nombor pseudorandom (PRNG). PRNG ialah algoritma deterministik yang, diberi benih yang sama, akan sentiasa menghasilkan urutan nombor yang sama. Tanpa permulaan yang betul, rand() bermula dengan benih yang dipratentukan, membawa kepada pengulangan jujukan.
Sumber Tambahan:
Atas ialah kandungan terperinci Mengapa Fungsi rand() Saya Menghasilkan Urutan Nombor Rawak Yang Sama Setiap Kali?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!