C++随机数生成器调用了多次
C++ random number generator called multiple times
嗨,我的随机数生成器在每次运行时都会给我相同的数字序列(尽管序列不同),我遇到了问题。下面是一段简化的代码来演示我的问题。
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int random(){
srand(time(0));
return(1+rand() % 6);
}
int main(){
cout<< random() <<endl;
cout<< random() <<endl;
} // will return a repeated double digit i.e. 11, 22, 33, 44
rand()是"伪随机"生成器。这意味着它使用数学函数从上一个值生成下一个值。
srand()为"rand()"的后续调用设置初始"seed"值。若你们播种相同的值,你们将得到相同的随机序列。若你们用当前时间播种,每一秒的顺序都会不同。
只调用一次:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int random(){
return(1+rand() % 6);
}
int main(){
srand(time(0));
cout<< random() <<endl;
cout<< random() <<endl;
}
srand()
为随机生成器种子。CCD_ 2是基于种子生成随机数的算法。因此,您只需要在程序中调用srand()
一次。继续阅读以了解更多信息。。。
此外,rand()
的后续呼叫将自动生成不同的号码。例如
while (1){
printf("%d ",rand()%100);
}
将打印所有不同的数字列表,例如5 34 65 23 56。。。
在执行它之前,请注意time(NULL)
每秒更新一次。相反,在int main(){
中,在开始时添加srand(time(NULL));
一次。
祝你好运!
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 制作具有平均值的随机数生成器
- C++ 随机数生成器:尝试将结果作为向量获取,但通过制作 void 函数来执行此操作而出现错误
- 尝试在 c++ 中创建随机数生成器并收到错误
- 存储并重新加载随机数生成器状态
- 作为随机数生成器的争用条件
- 播种随机数生成器以使用分叉的好方法是什么?
- 随机数生成器的性能因平台而异
- 随机数生成器的种子和状态有什么区别?
- RcppShark 随机森林示例引发有关随机数生成器的异常
- C++多个实例的随机数生成器组种子中增强
- C++随机数生成器仅生成 0 - C++ 11
- GSL+OMP:C++中的线程安全随机数生成器
- 贪吃蛇游戏 - 食物瓷砖的随机数生成器
- 随机数生成器在 C++ 用于 skipList.
- RSA 加密和解密期间的随机数生成器要求
- 了解随机数生成器调用中的C 参数
- C++随机数生成器调用了多次
- C++循环中调用伪随机数生成器函数 - 常量种子问题
- 对伪随机数生成器的相同调用之间的不同行为