Rumah > pembangunan bahagian belakang > C++ > Mengapa Fungsi C rand() Saya Terus Mengembalikan Nilai Yang Sama, dan Bagaimana Saya Membetulkannya Menggunakan srand()?

Mengapa Fungsi C rand() Saya Terus Mengembalikan Nilai Yang Sama, dan Bagaimana Saya Membetulkannya Menggunakan srand()?

Linda Hamilton
Lepaskan: 2024-12-19 20:47:26
asal
948 orang telah melayarinya

Why Does My C   rand() Function Keep Returning the Same Value, and How Do I Fix It Using srand()?

srand() Gelagat Fungsi Dalam Fungsi

Semasa bekerja dengan fungsi rand() dalam C , satu mungkin menghadapi masalah apabila memanggil fungsi berbilang kali dalam fungsi yang sama secara konsisten menghasilkan nilai yang sama. Untuk menyelesaikan isu ini, adalah penting untuk memahami gelagat fungsi srand().

Apakah itu srand() dan Mengapa Ia Penting?

Fungsi srand() memulakan penjana nombor rawak. Apabila berulang kali memanggil fungsi rand() tanpa memulakan semula dengan srand(), ia terus menghasilkan nombor berikutnya daripada benih yang sama, menghasilkan hasil yang boleh diramalkan.

Penyelesaian untuk Memperbaiki Keacakan

Kepada memastikan rawak sebenar, fungsi srand() hendaklah dipanggil sekali sahaja pada permulaan program, bukannya dalam fungsi tertentu. Dengan berbuat demikian, benih ditetapkan sekali sahaja, membenarkan fungsi rand() menjana urutan yang benar-benar rawak melalui panggilan seterusnya.

Menggunakan Penyelesaian

Dalam coretan kod yang disediakan, isunya terletak dalam Fungsi PullOne(). Fungsi srand() sedang dipanggil sebelum setiap seruan rand(), yang membawa kepada urutan yang boleh diramal dan hasil yang berulang. Untuk membetulkan ini, alihkan panggilan ke srand() ke permulaan fungsi utama:

int main() {
    std::srand(time(0));

    string pull_1, pull_2, pull_3;
    pull_1 = PullOne();
    pull_2 = PullOne();
    pull_3 = PullOne();

    return 0;
}
Salin selepas log masuk

Dengan menggunakan pengubahsuaian ini, fungsi rand() akan menghasilkan nilai yang berbeza untuk pull_1, pull_2 dan tarik_3.

Atas ialah kandungan terperinci Mengapa Fungsi C rand() Saya Terus Mengembalikan Nilai Yang Sama, dan Bagaimana Saya Membetulkannya Menggunakan srand()?. 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