第一次海報。我試圖模擬一個硬幣翻轉爲一個程序在golang。我正在嘗試使用math/rand
,並使用time
播種。使用數學/蘭德在golang中生成一個隨機變量
import (
"fmt"
"math/rand"
"time"
)
從我就在這裏,並在網上查找其他地方,我的實現應該工作:
func main() {
var random int
var i int
var j int
for j != 5 && i != 5 {
rand.Seed(time.Now().UnixNano())
random = rand.Intn(1)
if random == 0 {
i = i + 1
}
if random == 1 {
j = j + 1
}
}
fmt.Println(i, j)
}
但是,每次我運行它時,隨機最後總是爲0的種子沒有按也不會改變,這會讓我感到困惑。由於它在循環中,每次播種時不應該改變納秒時間嗎?
還要注意的是,時間不會在轉到操場改變。 – Vitruvius 2015-03-08 20:15:52
只要知道數學/蘭德生成僞隨機數不是真正的隨機數。 (...)這些僞隨機數很容易受到許多加密分析攻擊的影響 - 就像PlayStation發生的事情一樣(en.wikipedia.org/wiki/Random_number_generator_attack)。 – 2015-03-09 06:00:00