我想一次(同时)创建 3 个随机数。然而,他们一次返回相同的数字,即使它们实际上是随机的。示例:
------------------------
Variable: A B C
------------------------
Time 1 : 5 5 5
Time 2 : 3 3 3
Time 3 : 9 9 9
------------------------
它们应该是完全不同的数字。通过观察,我可以看到我的代码一次只能选择一个随机数(间隔 1 秒)。这是我正在使用的生成器代码:
unsigned int CMain::GenerateRandom(int min, int max)
{
srand((unsigned)time(0));
unsigned int random_integer;
int lowest = min, highest = max;
int range = (highest - lowest) + 1;
random_integer = lowest + int(range * rand() / (RAND_MAX + 1.0));
return random_integer;
}
我怎样才能一次生成一个完全随机的数字?请帮忙。
谢谢。
最佳答案
这里的问题是您在每次调用时都使用当前时间重置随机种子,这是不应该的。
在查询任何随机数之前调用一次 srand()
- 这已经足够了。
现在你总是将你的随机种子重置为完全相同的值(因为你使用当前时间)。 PC 中的随机数根本不是真正随机的。相同的种子将始终导致稍后生成相同的随机数集。这是有意的,例如用于savegames 让游戏总是有相同的事情发生,而不必保存生成的每个随机数等。
关于c++ - 我如何一次完全生成一个随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5438550/