OpenGL C ++如何获得随机值?

时间:2017-05-30 05:51:20

标签: c++

我想在Visual Studio中使用OpenGL和C ++创建类似地形的森林。当然,我想随意放置树木或灌木等物体,看起来更自然。我想通过使用rand()函数来做到这一点,但是通过使用它,在程序运行时,我的对象不断改变位置。我知道程序是循环的,因为rand()的行为方式正是如此。我想问你们,如果有一个很好的替代方案。我只是希望在创建每个对象时获得一个随机位置值,并且该值保持不变。以下是具有此问题的代码的一小部分:

for (int i = -5.0; i < 5.0; i++){
    for (int j = -5.0; j < 5.0; j++){
        double k = i * 10.0 + ((rand() % 20 + 10) + ((rand() % 8 + 1) / 10.));
        double l = j * 10.0 + ((rand() % 20 + 10) + ((rand() % 8 + 1) / 10.));
        if (i % 2 == 0 && j % 2 == 0)
        {
            drvo(k, l);
        }
    }
}

我将非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

rand不是完全随机的,它是伪随机的。意味着给定相同的种子,rand将产生相同的值。

我建议使用srand为PRNG播种种子,并将其保存以供日后使用。

如果您想再次渲染场景,请使用已保存的种子再次调用srandrand次调用的顺序应该会产生相同的结果。