返回相同值 (C++) 的随机数生成器
Random number generator returning the same value (C++)
我一直在尝试为动态分配的实例数组生成一个随机数,但每次尝试时,每个实例总是被赋予完全相同的值:
//IN MAIN
Enemy* enemy;
int num;
std::cout << "How many enemies would you like there to be?" << std::endl;
std::cin >> num;
enemy = new Enemy[num];
for (int q = 0; q < num; q++)
{
enemy[q].setAngle();
}
for (int q = 0; q < num; q++)
{
std::cout << enemy[q].getAngle() << std::endl;
}
//IN THE ENEMY CLASS
void Enemy::setAngle()
{
srand(time(NULL));
angle = rand() % 360 + 1;
}
int Enemy::getAngle()
{
return angle;
}
输出将始终是 1 到 360 之间的数字,但是当调用 getAngle() 时,输出只是在多行上重复的相同数字。为什么会这样?我做错了什么,我该如何解决?
提前致谢
每次调用 setAngle
时,您都在播种随机数生成器。如果这一切都发生在一秒钟内(这是time
的分辨率),它将始终以相同的值播种,因此从相同的伪随机值开始。相反,您应该只在程序开始时调用srand
一次。
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 制作具有平均值的随机数生成器
- C++ 随机数生成器:尝试将结果作为向量获取,但通过制作 void 函数来执行此操作而出现错误
- 尝试在 c++ 中创建随机数生成器并收到错误
- 存储并重新加载随机数生成器状态
- 作为随机数生成器的争用条件
- 播种随机数生成器以使用分叉的好方法是什么?
- 随机数生成器的性能因平台而异
- 随机数生成器的种子和状态有什么区别?
- RcppShark 随机森林示例引发有关随机数生成器的异常
- C++多个实例的随机数生成器组种子中增强
- C++随机数生成器仅生成 0 - C++ 11
- GSL+OMP:C++中的线程安全随机数生成器
- 贪吃蛇游戏 - 食物瓷砖的随机数生成器
- 随机数生成器在 C++ 用于 skipList.
- RSA 加密和解密期间的随机数生成器要求
- 如何使用 cpp 设置随机数生成器的语法?
- 产生相同结果的随机数生成器
- C++随机数生成器通常在 Visual Studio 中运行程序时在 2 次后停止生成数字
- 如何理解C++11随机数生成器