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; }
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!