Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menjana Nombor Benar-Benar Rawak dengan Pakej Rand Go?
Soalan:
Pakej rand dalam Go menyediakan Int31n berfungsi untuk menjana nombor rawak pseudo, tetapi ia seolah-olah menghasilkan output yang sama apabila pelaksanaan berulang. Adakah terdapat cara untuk mendapatkan hasil yang benar-benar rawak setiap kali fungsi dipanggil?
Jawapan:
Pakej rand menggunakan penjana nombor rawak pseudo deterministik (PRNG). Setiap kali program dijalankan, PRNG menjana jujukan nombor yang sama berdasarkan nilai awal tetap yang dikenali sebagai "benih."
Untuk menjana nombor rawak yang berbeza setiap larian, adalah penting untuk memulakan penjana dengan benih yang unik. Satu pendekatan biasa ialah menggunakan masa semasa dalam nanosaat, yang berubah setiap kali program dilaksanakan. Ini boleh dilakukan menggunakan kod berikut:
<code class="go">import "time" func main() { rand.Seed(time.Now().UnixNano()) fmt.Println(rand.Int31n(100)) }</code>
Sebagai alternatif, pakej crypto/rand menyediakan sumber rawak yang lebih selamat. Ia mengumpulkan entropi daripada pelbagai sumber sistem, seperti pergerakan tetikus, suhu pemproses dan input papan kekunci. Walau bagaimanapun, prestasinya mungkin lebih perlahan berbanding pakej rand.
Dengan menetapkan benih unik atau menggunakan pakej crypto/rand, anda boleh memastikan bahawa fungsi rand.Int31n menjana nombor yang benar-benar rawak setiap kali ia dipanggil .
Atas ialah kandungan terperinci Bagaimana untuk Menjana Nombor Benar-Benar Rawak dengan Pakej Rand Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!