首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >随机数生成器-为什么每次都是种子

随机数生成器-为什么每次都是种子
EN

Stack Overflow用户
提问于 2013-12-17 22:33:04
回答 7查看 22.7K关注 0票数 18

我对c和c++比较陌生。在java中,我用来编程的语言,很容易实现随机数的生成。只需从一个名为Math的类调用静态随机方法即可。

int face = ((int)(Math.random() * 6) + 1);

模拟掷骰子..。

在c和c++中,您必须通过调用srand函数来“为随机数生成器设置种子”。

srand ( time(NULL) );

这样做的意义是什么-我的意思是,在每次代码运行时都必须为随机数生成器设定种子有什么好处吗?

EN

回答 7

Stack Overflow用户

发布于 2013-12-17 22:34:58

给定相同的种子,伪随机数生成器每次都会生成相同的序列。所以归根结底,你是否每次运行时都想要一个不同的伪随机数序列。

这真的取决于你的需求。有些时候,你想要重复一个序列。有时你不这样做。您需要了解每个特定应用程序的需求。

有一件事是绝对不能做的,那就是在生成单个序列的过程中重复播种。这样做很可能会破坏序列的分布。

票数 26
EN

Stack Overflow用户

发布于 2013-12-17 22:36:41

通常所说的随机数生成器实际上是伪随机数生成器。这通常意味着,如果您提供序列的“密钥”(称为“种子”),则可以生成相同的随机序列。当您希望测试基于随机化的算法时,这是非常有用的,并且您需要确保可重复的结果。

如果你不“播种”你的随机数生成器,默认情况下它会播种一些(通常基于系统时间)随机数,因此每次你运行你的程序时都会产生不同的序列。

票数 12
EN

Stack Overflow用户

发布于 2013-12-17 22:34:46

如果你没有设定生成器的种子,那么每次你运行你的程序时,它都会有相同的种子,并且随机数序列每次都是一样的。

还要注意,您应该只在程序开始时为生成器设定一次种子。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20636859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档