Mengapa Nombor Rawak Saya Sama Dalam Lelaran Gelung?

Mary-Kate Olsen
Lepaskan: 2024-11-04 10:02:01
asal
629 orang telah melayarinya

Why are My Random Numbers the Same Within Loop Iterations?

Nombor Rawak Sama dalam Lelaran Gelung

Dalam gelung anda yang dilaksanakan 15 kali, anda telah menggunakan dh.setDoors() dalam setiap lelaran. Di dalam fungsi ini, srand(time(0)) dipanggil untuk memulakan penjanaan nombor pseudo-rawak. Walau bagaimanapun, panggilan seterusnya ke rand() dalam gelung menghasilkan nilai malar bagi carSetter dan penentu sepanjang kesemua 15 lelaran.

Tingkah laku ini berlaku kerana srand(time(0)) menetapkan benih untuk penjana nombor rawak berdasarkan pada masa semasa. Memandangkan gelung dilaksanakan dengan cepat, masa(0) mengembalikan nilai yang sama setiap kali, menghasilkan urutan nombor rawak pseudo yang sama.

Untuk mengatasi isu ini, disyorkan untuk memanggil srand(time(0) sahaja )) sekali pada permulaan program, lazimnya mengikuti proses seperti:

<code class="c++">srand(time(0));

for (int i = 0; i < 15; i++) {
    carSetter = rand() % 3 + 1;
    decider = rand() % 2 + 1;
}</code>
Salin selepas log masuk

Dengan melakukan pemulaan ini sekali sahaja, penjana nombor rawak pseudo akan menjana urutan nombor yang unik untuk setiap lelaran gelung, menghasilkan variasi yang dijangkakan dalam nilai carSetter dan penentu.

Atas ialah kandungan terperinci Mengapa Nombor Rawak Saya Sama Dalam 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan