Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menjana Nombor Benar-Benar Rawak dengan Pakej Rand Go?

Bagaimana untuk Menjana Nombor Benar-Benar Rawak dengan Pakej Rand Go?

Susan Sarandon
Susan Sarandonasal
2024-11-10 08:48:03154semak imbas

How to Generate Truly Random Numbers with Go's Rand Package?

Menyelesaikan masalah Penjanaan Nombor Rawak Pseudo dalam Go dengan Pakej Rand

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!

Kenyataan:
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