Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Kami Boleh Menjana Benih Rawak Berkualiti Tinggi untuk Penjana Nombor Rawak Pseudo?
Menjana Benih Rawak Berkualiti Tinggi untuk Penjana Nombor Pseudo-Random
Permulaan penjana nombor rawak pseudo (PRNG) menggunakan srand () adalah penting untuk menjana nombor rawak berkualiti tinggi. Artikel yang anda rujuk mencadangkan menggunakan output fungsi time() sebagai benih, dengan mengambil kira nilai tersendiri setiap saat. Walau bagaimanapun, untuk aplikasi yang dijalankan berbilang kali sesaat, pendekatan ini mungkin mengakibatkan perlanggaran.
Alternatif yang lebih dipercayai ialah menggabungkan berbilang sumber entropi untuk menghasilkan benih yang teguh. Satu pendekatan yang disyorkan untuk aplikasi Linux mudah alih ialah menggunakan formula berikut:
unsigned long seed = mix(clock(), time(NULL), getpid());
Di sini, mix() ialah fungsi yang menggabungkan tiga sumber entropi:
Dengan menggabungkan sumber ini, kami menjana benih yang sangat tersendiri dan menyediakan asas unggul untuk PRNG.
Fungsi mix() ialah versi diubah suai bagi Fungsi Campuran 96-bit Robert Jenkins, yang mengacak nilai input dengan berkesan untuk mencipta benih keluaran yang sangat rawak.
Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Menjana Benih Rawak Berkualiti Tinggi untuk Penjana Nombor Rawak Pseudo?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!