Rumah > pembangunan bahagian belakang > C++ > Mengapa Saya Mendapat Nombor Rawak Yang Sama dalam Setiap Lelaran Gelung?

Mengapa Saya Mendapat Nombor Rawak Yang Sama dalam Setiap Lelaran Gelung?

DDD
Lepaskan: 2024-11-04 11:50:02
asal
231 orang telah melayarinya

Why Do I Get the Same Random Numbers in Each Loop Iteration?

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan