Menyelesaikan Gelagat Bukan Rawak rand()
Apabila melaksanakan program menggunakan fungsi rand(), pengguna kerap menghadapi isu untuk mendapatkan konsisten urutan berangka. Artikel ini menyiasat sumber tingkah laku ini dan mencadangkan penyelesaian untuk memastikan rawak sebenar.
Fungsi rand() menjana nombor pseudorandom, yang bukan secara rawak tetapi berdasarkan algoritma tertentu. Algoritma ini menjalani transformasi matematik menggunakan benih atau nombor rawak sebelumnya, yang menghasilkan ketak rawak yang diperhatikan.
Untuk mengatasi isu ini, kita perlu menetapkan benih rawak untuk penjana nombor rawak. Ini boleh dicapai menggunakan fungsi srand() dengan hujah berdasarkan masa sistem atau sumber bukan deterministik lain. Dengan memulakan benih dengan nilai yang berbeza setiap kali, kami menetapkan semula algoritma penjanaan nombor rawak dengan berkesan, memastikan hasil yang lebih rawak.
Pertimbangkan contoh berikut:
#include <iostream> #include <cstdlib> #include <ctime> int main() { srand((unsigned int)time(NULL)); std::cout << rand() << std::endl; return 0; }
Dalam contoh ini, kami menggunakan srand() dengan benih yang diperoleh daripada masa sistem semasa. Apabila masa sistem sentiasa berubah, jujukan nombor rawak juga akan berbeza-beza, membawa kepada rawak sebenar.
Untuk maklumat lanjut tentang konsep penjana nombor pseudorandom, rujuk kepada yang disediakan pautan:
Atas ialah kandungan terperinci Mengapa rand() Menjana Nombor Yang Sama, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!