Mengapa Saya Mendapat Nombor Rawak yang Sama dalam Setiap Lelaran Gelung?
Dalam gelung anda, anda telah melaksanakan srand(time(0) ) fungsi, berhasrat untuk menjana nombor rawak yang unik. Walau bagaimanapun, selepas pemerhatian, anda mendapati bahawa pembolehubah carSetter dan penentu secara konsisten mencetak nilai yang sama dalam setiap larian gelung.
Tingkah laku ini dikaitkan dengan sifat fungsi srand(). Apabila dipanggil, srand() memulakan benih penjana nombor rawak berdasarkan parameter yang ditentukan. Dalam kes ini, masa(0) digunakan, yang mewakili masa semasa dalam saat. Walau bagaimanapun, oleh kerana gelung dilaksanakan dengan pantas, nilai masa(0) kekal sama sepanjang lelaran gelung. Akibatnya, benih tidak berubah, menghasilkan urutan nombor rawak pseudo yang sama setiap kali.
Untuk menangani isu ini, disyorkan untuk memanggil srand() sekali sahaja pada permulaan program anda, memulakan benih dengan pembolehubah atau nilai yang tidak akan berubah semasa pelaksanaan gelung. Ini akan memastikan penjanaan nombor rawak unik dalam setiap lelaran.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Nombor Rawak Yang Sama dalam Setiap Lelaran Gelung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!