Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengelakkan Mengulang Nombor Rawak dalam Gelung C?

Bagaimana untuk Mengelakkan Mengulang Nombor Rawak dalam Gelung C?

Patricia Arquette
Patricia Arquetteasal
2024-12-21 06:49:10948semak imbas

How to Avoid Repeating Random Numbers in a C   Loop?

Cara Menjana Nombor Rawak Yang Benar-benar Unik dalam Gelung C

Dalam kod ini, anda cuba menjana nombor rawak yang berbeza dengan setiap gelung lelaran:

for (int t = 0; t<10; t++)
{
    int random_x;
    srand(time(NULL));
    random_x = rand() % 100;
    cout << "\nRandom X = " << random_x;
}

Walau bagaimanapun, isunya ialah anda memanggil srand() beberapa kali di dalam gelung. Ini memulakan penjana nombor rawak (RNG) setiap kali dengan nilai benih yang sama, menghasilkan urutan nombor rawak yang sama.

Untuk menjana nombor rawak yang benar-benar unik dalam satu gelung, anda perlu mengikuti langkah berikut:

  1. Mulakan RNG sekali, di luar gelung. Ini memastikan bahawa nilai benih baharu digunakan setiap kali anda laksanakan gelung.
srand(time(NULL)); // Initialize RNG outside of loop
  1. Alihkan penjanaan nombor rawak di dalam gelung. Gantikan panggilan srand() dengan rand(). Ini akan menjana nombor rawak baharu untuk setiap lelaran.
random_x = rand() % 100;
  1. Mengenai penetapan semula RNG, memanggil srand() dengan nilai benih baharu akan menetapkan semula RNG permulaan. Anda boleh melakukan ini di dalam gelung atau pada bila-bila masa dalam program anda di mana anda perlu menetapkan semula RNG.

Dengan mengikuti langkah ini, anda boleh menjana nombor rawak yang berbeza dalam setiap lelaran gelung anda.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Mengulang Nombor Rawak dalam Gelung C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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