使用math / rand在golang中生成随机变量

时间:2015-03-08 19:38:45

标签: random go

我正在尝试为golang中的程序模拟硬币翻转。我正在尝试使用math/rand,我正在使用time播种它。

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.种子也不会改变,这让我感到困惑。因为它在循环内,所以每次播种时不应该以纳秒为单位改变时间吗?

1 个答案:

答案 0 :(得分:5)

不要在循环中重新设置,只执行一次。

rand.Intn(n)返回值> = 0且< ñ。因此rand.Intn(1)只能返回0,您希望rand.Intn(2)获得0或1。

固定代码: http://play.golang.org/p/3D9osMzRRb

相关问题