我想在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);
}
}
}
我将非常感谢任何帮助!
答案 0 :(得分:1)
rand
不是完全随机的,它是伪随机的。意味着给定相同的种子,rand
将产生相同的值。
我建议使用srand
为PRNG播种种子,并将其保存以供日后使用。
如果您想再次渲染场景,请使用已保存的种子再次调用srand
,rand
次调用的顺序应该会产生相同的结果。