使用 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。
我正在尝试为 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。