Rumah >pembangunan bahagian belakang >C++ >Mengapa Fungsi rand() Saya Mengembalikan Nilai Yang Sama Dalam Satu Panggilan Fungsi?

Mengapa Fungsi rand() Saya Mengembalikan Nilai Yang Sama Dalam Satu Panggilan Fungsi?

Susan Sarandon
Susan Sarandonasal
2024-12-25 11:37:071000semak imbas

Why Does My rand() Function Return Identical Values Within a Single Function Call?

Fungsi Rawak Mengembalikan Nilai Identik dalam Fungsi

Anda menghadapi masalah di mana fungsi rand() menjana nilai yang sama apabila dipanggil dalam fungsi tunggal. Untuk menyelesaikan masalah ini, mari kita mendalami isu ini dan terokai penyelesaiannya.

Memahami Isu

Fungsi PullOne() menggunakan std::srand(time (0)) berfungsi untuk memulakan penjana nombor rawak. Inisialisasi ini memberikan nilai benih berdasarkan masa semasa. Walau bagaimanapun, dengan memanggil srand() dalam fungsi, anda secara berkesan menetapkan semula penjana nombor rawak setiap kali fungsi dipanggil. Ini menghasilkan urutan nombor rawak yang sama dihasilkan.

Penyelesaian

Untuk menjana nilai rawak yang benar-benar rawak dalam PullOne(), anda harus memulakan penjana nombor rawak sekali sahaja , sebelum mana-mana panggilan fungsi. Ini memastikan bahawa fungsi menjana urutan unik nombor rawak setiap kali ia dipanggil.

Untuk mencapai ini, anda boleh mengubah suai kod anda seperti berikut:

// Initializing the random number generator
std::srand(time(0));

string PullOne()
{
    string pick;
    string choices[3] = {"BAR", "7", "cherries"};

    pick = choices[(std::rand() % 3)];
    return pick;
}

Dengan memulakan srand() di luar PullOne(), anda memastikan ia dipanggil sekali sahaja dan penjana nombor rawak disemai dengan betul. Pengubahsuaian ini memastikan bahawa setiap panggilan ke PullOne() menghasilkan hasil yang benar-benar rawak, menjadikan nilai pull_1, pull_2 dan pull_3 berbeza.

Atas ialah kandungan terperinci Mengapa Fungsi rand() Saya Mengembalikan Nilai Yang Sama Dalam Satu Panggilan Fungsi?. 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