我想一次创建3个随机数(同时).但是,即使它们实际上是随机的,它们一次返回相同的数字.例:
------------------------
Variable: A B C
------------------------
Time 1 : 5 5 5
Time 2 : 3 3 3
Time 3 : 9 9 9
------------------------
Run Code Online (Sandbox Code Playgroud)
他们认为根本就是不同的数字.根据观察,我可以看到我的代码一次只能选择一个随机数(间隔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;
}
Run Code Online (Sandbox Code Playgroud)
我怎么能一次生成一个完全随机的数字?请帮忙.
谢谢.
Mar*_*rio 10
你在这里的问题是你使用你不应该做的当前时间重置每次调用的随机种子.
srand()在查询任何随机数之前调用一次 - 这就是全部而且绰绰有余.
现在,您始终将随机种子重置为完全相同的值(使用当前时间).PC中的随机数根本不是随机数.相同的种子将始终导致稍后生成的同一组随机数.这是故意的,并且例如在游戏的存档游戏中使用,总是在不必保存生成的每个随机数等的情况下发生相同的事情.