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

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

Patricia Arquette
Lepaskan: 2024-12-13 20:08:14
asal
608 orang telah melayarinya

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())
    Salin selepas log masuk
  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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan