OpenGL C 如何获得随机值

OpenGL C++ How do i get a random value?

本文关键字:随机 何获得 OpenGL      更新时间:2023-10-16

我想在Visual Studio中使用OpenGL和C 创建像Terrain这样的森林。自然,我想随机将树木或灌木丛等物体放置,以使其看起来更自然。我想通过使用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,您可以保存以备后用。

当您想再次渲染场景时,用保存的种子再次致电srandrand调用的顺序应产生相同的结果。