随机种子是什么意思?

来源:2-3 随机生成算法测试用例

邹正霖

2020-10-31

老师,能否解释下随机种子是什么意思?
srand(time(NULL))
这和直接rangdom()生成随机数有什么不同?有什么好处?

写回答

1回答

liuyubobobo

2020-11-01

简单地说,程序无法真正的生成随机数。程序生成随机数的原理,是靠一个随机种子“启动”。之后省城一系列“伪随机数”。


你可以尝试一下,运行这个程序,每次打印的数字是一样的。

int main(void){
    cout << rand() << endl;
    return 0;
}


但是这样做,每次打印的数字就不一样了:

int main(void){
    srand(time(NULL));
    cout << rand() << endl;
    return 0;
}


因为这样做,每次使用当前的时间戳作为了随机种子,每次运行的时间是不一样的,所以得到的随机数是不一样的。


关于随机种子具体是如何作用在随机数生成算法中,最后得到随机数的,已经超出这个课程的范畴了,也不是在问答区一句话两句话能解释清楚的。如果对此感兴趣,可以在网上搜索自学一下随机数生成算法。


继续加油!:)

1
1
邹正霖
好的,明白了,谢谢老师
2020-11-01
共1条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程