Rumah >pembangunan bahagian belakang >Golang >Mengapakah `rand.Intn()` Go Mengembalikan Nombor Yang Sama?

Mengapakah `rand.Intn()` Go Mengembalikan Nombor Yang Sama?

Patricia Arquette
Patricia Arquetteasal
2024-12-13 20:08:14613semak imbas

Why Does Go's `rand.Intn()` Return the Same Number?

Go rand.Intn Mengembalikan Nombor Yang Sama

Dalam Go, fungsi rand.Intn() menjana integer pseudorandom antara 0 (termasuk ) dan n (eksklusif). Walau bagaimanapun, pengguna telah melaporkan bahawa kod mereka menggunakan fungsi ini sentiasa mengembalikan nilai yang sama. Mengapa ini berlaku?

Terdapat dua sebab utama untuk tingkah laku ini:

  1. Kurang Permulaan:
    Pakej rand mengekalkan Sumber global yang mendasari semua penjana nombor rawaknya, termasuk rand.Intn(). Secara lalai, Sumber ini tidak dimulakan, menghasilkan urutan nilai yang menentukan. Untuk membetulkannya, panggil rand.Seed() untuk memulakan Sumber dengan nilai rawak, biasanya diperoleh daripada jam sistem:

    rand.Seed(time.Now().UnixNano())
  2. Caching Taman Permainan:
    Untuk contoh khusus daripada lawatan Go ini, kod dijalankan di Taman Permainan Go. Taman Permainan menyimpan cache outputnya atas sebab prestasi. Ini bermakna walaupun anda menjana berbilang nombor rawak, Taman Permainan hanya akan menunjukkan nombor pertama melainkan anda memuatkan semula halaman tersebut.

Atas ialah kandungan terperinci Mengapakah `rand.Intn()` Go Mengembalikan Nombor Yang Sama?. 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