我想在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);
}
}
}
我得到的任何帮助将不胜感激!
最佳答案
rand
不是完全随机的,它是伪随机的。意味着给定相同的种子,rand
将产生相同的值。
我建议使用srand
为PRNG注入种子,并将其保存以备后用。
当您要再次渲染场景时,请使用保存的种子再次调用srand
,并且rand
调用序列应产生相同的结果。
关于c++ - OpenGL C++如何获得随机值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44254414/