我想实现,我会为价值噪声使用该随机函数:值噪声随机函数怪输出
float random(int x, int y){
int r;
float s;
srand(y*hgrid+x+seed);
r=rand();
s = (float)(r & 0x7fff)/(float)0x7fff;
return (s);
}
由于此功能的作者说,这(https://code.google.com/p/fractalterraingeneration/wiki/Value_Noise):
需要注意的是有些编译器有自己的RNG,因此 这可能不适用于所有人。 Visual C++ 2008尤其是 麻烦,但是Linux上的GCC完美运行。
所以,我想它在Windows下使用的MinGW。输出结果真的很奇怪,因为它给我的数字从0.0增加到1.0。
虽然在Linux上,它的工作原理就像它应该从0.0到1.0的随机数。
因为我使用的是mingw,它应该像gcc,所以我期望有一些工作方式相同。
它为什么不起作用?有没有办法让它工作?
确实,调用rand 2次给了我随机数。谢谢! – Aulaulz 2015-02-05 19:42:44
这不是一个特别好的发生器。 Wiki文章引用的Park和Miller的文章为线性一致算法设定了一个标准,尽管当时他们发现大部分都缺乏,在过去的25年中,人们会认为图书馆实施者会转换到更合理的变体。 – 2015-02-05 21:06:07
我可能会补充说你_never_希望你的基本生成器返回一个浮点数(尽管在这个问题的特定情况下这可能是确定的);当你需要固定数量的具体数值时,返回一个浮点数就不可能纠正内在的偏差。 – 2015-02-05 21:23:11