我想一次创建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中的随机数并不是真正的随机数。相同的种子将始终导致以后生成相同的随机数集。这是有意的,例如用于游戏的savegame总是发生相同的事情,而不必保存生成的每个随机数,等等。

关于c++ - 如何一次生成完全随机数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5438550/

10-12 00:15
查看更多