[英]Go rand.Intn same number/value
2個原因:
你必須initalize全球Source
的使用rand.Intn()
和其他功能rand
使用包rand.Seed()
例如:
rand.Seed(time.Now().UnixNano())
查看使用 Go Rand 包的Difficulty 的可能重復項。
引用rand
包文檔:
諸如 Float64 和 Int 之類的頂級函數使用默認的共享源,該源在每次程序運行時生成確定性的值序列。 如果每次運行需要不同的行為,請使用 Seed 函數來初始化默認 Source。
Tour在緩存其輸出的Go Playground上運行示例。
請參閱為什么 count++(而不是 count = count + 1)會改變 Golang 中返回地圖的方式中的詳細信息。
要使 rand 包中的函數正常工作,您必須設置一個“種子”值。 這必須是用戶決定的一個很好的隨機值,因為 - 根據https://golang.org/pkg/math/rand/#Rand.Seed這是 golang 用來首先將系統設置為確定性狀態的值然后根據該值生成一個數字。
要使示例代碼正常工作,您可以嘗試
func main() {
rand.Seed(time.Now().UnixNano())
fmt.Println("My favorite number is ", rand.Intn(10))
}
time.Now().UnixNano 可以給出任意(類似)的數字,因為該值以“千分之一秒”為單位
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.