Mengapakah nombor rawak saya konsisten dalam satu gelung?

Linda Hamilton
Lepaskan: 2024-11-04 15:03:19
asal
360 orang telah melayarinya

Why are my random numbers consistent within a loop?

Memahami Nombor Rawak Konsisten dalam Lelaran

Dalam coretan kod yang disediakan, diperhatikan bahawa nombor rawak yang dijana dalam lelaran gelung kekal konsisten. Khususnya, pembolehubah 'carSetter' dan 'decider' mengekalkan nilai yang sama sepanjang 15 lelaran walaupun gelung bertujuan untuk menjana nilai unik.

Tingkah laku ini timbul disebabkan oleh penempatan srand(time(0)) dalam gelung . Ia menentukan urutan nombor pseudorandom yang dikembalikan dalam panggilan berikutnya ke rand(). Masalahnya terletak pada fakta bahawa masa(0) biasanya mengembalikan nilai yang sama semasa pelaksanaan gelung, yang membawa kepada penjanaan siri nombor rawak yang konsisten.

Untuk membetulkan isu ini dan memastikan rawak sebenar, ia adalah penting untuk mengalihkan panggilan awal ke srand(time(0)) di luar gelung. Dengan berbuat demikian, anda memulakan penjana nombor rawak sekali sahaja, memastikan urutan nombor rawak berbeza dengan ketara merentas lelaran. Kod berikut menunjukkan pembetulan ini:

srand(time(0)); // Called once at the program's start

for (int i = 0; i < 15; i++) {
    carSetter = rand() % 3 + 1;
    decider = rand() % 2 + 1;
    // ... Rest of the code within the loop
}
Salin selepas log masuk

Pengubahsuaian ini membenarkan gelung menjana nombor rawak yang berbeza dengan setiap lelaran seperti yang dimaksudkan. Ambil perhatian bahawa adalah tidak perlu untuk memanggil srand() dalam gelung kerana penjana nombor pseudorandom akan terus menghasilkan nilai unik sehingga anda menetapkan semula secara eksplisit dengan panggilan lain ke srand().

Atas ialah kandungan terperinci Mengapakah nombor rawak saya konsisten dalam satu 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!