|
Go’s |
|
![]()
package main |
|
import ( "fmt" "math/rand" "time" ) |
|
func main() { |
|
|
Ví dụ, |
fmt.Print(rand.Intn(100), ",")
fmt.Print(rand.Intn(100))
fmt.Println()
|
|
|
fmt.Println(rand.Float64())
|
|
Điều này có thể được sử dụng để tạo ra các số thực
ngẫu nhiên trong các phạm vi khác, ví dụ |
fmt.Print((rand.Float64()*5)+5, ",")
fmt.Print((rand.Float64() * 5) + 5)
fmt.Println()
|
|
Bộ tạo số mặc định là xác định được, vì thế mặc định nó sẽ
tạo ra cùng một chuỗi số mỗi lần. Để tạo ra các chuỗi khác nhau,
hãy cung cấp cho nó một seed thay đổi. Lưu ý rằng điều này
không an toàn để sử dụng cho các số ngẫu nhiên mà bạn dự định
là bí mật; hãy sử dụng |
s1 := rand.NewSource(time.Now().UnixNano())
r1 := rand.New(s1)
|
|
Kết quả gọi |
fmt.Print(r1.Intn(100), ",")
fmt.Print(r1.Intn(100))
fmt.Println()
|
|
Nếu bạn khởi tạo một nguồn với cùng một số, nó sẽ tạo ra cùng một chuỗi số ngẫu nhiên. |
s2 := rand.NewSource(42)
r2 := rand.New(s2)
fmt.Print(r2.Intn(100), ",")
fmt.Print(r2.Intn(100))
fmt.Println()
s3 := rand.NewSource(42)
r3 := rand.New(s3)
fmt.Print(r3.Intn(100), ",")
fmt.Print(r3.Intn(100))
}
|
|
Tùy thuộc vào môi trường bạn chạy mẫu này, một số
các số được tạo ra có thể khác nhau. Lưu ý rằng
trên Go playground, việc khởi tạo với time.Now() |
$ go run random-numbers.go 81,87 0.6645600532184904 7.123187485356329,8.434115364335547 0,28 5,87 5,87 |
|
Xem tài liệu |
Ví dụ tiếp theo: Number Parsing.