相关疑难解决方法(0)

随机数发生器 - 为什么每次都播种

我是c和c ++的新手.在我用来编程的语言java中,它很容易实现随机数生成.只需从名为Math的类中调用静态随机方法.

int face = ((int)(Math.random() * 6) + 1);
Run Code Online (Sandbox Code Playgroud)

模拟掷骰子......

在c和c ++中,你必须通过调用srand-function 来"播种随机数生成器"

srand ( time(NULL) );
Run Code Online (Sandbox Code Playgroud)

这样做有什么意义 - 我的意思是每次运行代码时都必须为随机数生成器播种?

c c++

17
推荐指数
4
解决办法
2万
查看次数

golang rand.Int()。为什么每次都是相同的值?

我有一个代码:

package main

import ("fmt"
    "math/rand"
    "strconv"
)

func main() {
    fmt.Println(strconv.Itoa(rand.Int()))
    fmt.Println(strconv.Itoa(rand.Int()))
    fmt.Println(strconv.Itoa(rand.Int()))
    fmt.Println(strconv.Itoa(rand.Int()))
    fmt.Println(strconv.Itoa(rand.Int()))
    fmt.Println(strconv.Itoa(rand.Int()))
    fmt.Println(strconv.Itoa(rand.Int()))
    fmt.Println(strconv.Itoa(rand.Int()))
    fmt.Println(strconv.Itoa(rand.Int()))
    fmt.Println(strconv.Itoa(rand.Int()))
    fmt.Println(strconv.Itoa(rand.Int()))
    fmt.Println(strconv.Itoa(rand.Int()))
    fmt.Println(strconv.Itoa(rand.Int()))
    fmt.Println(strconv.Itoa(rand.Int()))
}
Run Code Online (Sandbox Code Playgroud)

当我运行它 ( go run code.go) 时,我每次都会得到相同的值:

5577006791947779410
8674665223082153551
6129484611666145821
4037200794235010051
3916589616287113937
6334824724549167320
605394647632969758
1443635317331776148
894385949183117216
2775422040480279449
4751997750760398084
7504504064263669287
1976235410884491574
3510942875414458836
Run Code Online (Sandbox Code Playgroud)

第二次尝试:

package main

import ("fmt"
        "math/rand"
        "strconv"
)

func main() {
    fmt.Println(strconv.Itoa(rand.Intn(100)))
    fmt.Println(strconv.Itoa(rand.Intn(100)))
    fmt.Println(strconv.Itoa(rand.Intn(100)))
    fmt.Println(strconv.Itoa(rand.Intn(100)))
    fmt.Println(strconv.Itoa(rand.Intn(100)))
    fmt.Println(strconv.Itoa(rand.Intn(100)))
    fmt.Println(strconv.Itoa(rand.Intn(100)))
}
Run Code Online (Sandbox Code Playgroud)

同样的行为。每次的

81
87
47
59
81
18
25
Run Code Online (Sandbox Code Playgroud)

你在开玩笑吗?为什么会发生?这里不描述非随机相同的结果。我只能看到pseudo-random …

random go

-1
推荐指数
2
解决办法
307
查看次数

标签 统计

c ×1

c++ ×1

go ×1

random ×1