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

Generating a random variable in golang using math/rand

我正在尝试为 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 结束。种子也没有改变,这让我很困惑。由于它在循环中,每次播种时以纳秒为单位的时间不应该改变吗?

不要在循环中重新播种,只重新播种一次。

rand.Intn(n) returns 一个值 >= 0 且 < n。所以rand.Intn(1)只能return0,你要rand.Intn(2)得到0或者1。

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