我对c和c++比较陌生。在java中,我用来编程的语言,很容易实现随机数的生成。只需从一个名为Math的类调用静态随机方法即可。
int face = ((int)(Math.random() * 6) + 1);
模拟掷骰子..。
在c和c++中,您必须通过调用srand函数来“为随机数生成器设置种子”。
srand ( time(NULL) );
这样做的意义是什么-我的意思是,在每次代码运行时都必须为随机数生成器设定种子有什么好处吗?
发布于 2013-12-17 22:34:58
给定相同的种子,伪随机数生成器每次都会生成相同的序列。所以归根结底,你是否每次运行时都想要一个不同的伪随机数序列。
这真的取决于你的需求。有些时候,你想要重复一个序列。有时你不这样做。您需要了解每个特定应用程序的需求。
有一件事是绝对不能做的,那就是在生成单个序列的过程中重复播种。这样做很可能会破坏序列的分布。
发布于 2013-12-17 22:36:41
通常所说的随机数生成器实际上是伪随机数生成器。这通常意味着,如果您提供序列的“密钥”(称为“种子”),则可以生成相同的随机序列。当您希望测试基于随机化的算法时,这是非常有用的,并且您需要确保可重复的结果。
如果你不“播种”你的随机数生成器,默认情况下它会播种一些(通常基于系统时间)随机数,因此每次你运行你的程序时都会产生不同的序列。
发布于 2013-12-17 22:34:46
如果你没有设定生成器的种子,那么每次你运行你的程序时,它都会有相同的种子,并且随机数序列每次都是一样的。
还要注意,您应该只在程序开始时为生成器设定一次种子。
https://stackoverflow.com/questions/20636859
复制相似问题