我无法理解这一点,这更随机?
rand()
Run Code Online (Sandbox Code Playgroud)
要么
rand() * rand()
Run Code Online (Sandbox Code Playgroud)
我发现它是一个真正的脑筋急转弯,你能帮助我吗?
编辑:
直观地,我知道数学答案将是它们同样随机,但我不禁想到,如果你将两者相乘的话"运行随机数算法"两次,你会创造一些比随机更随机的东西它一次.
由于GPU驱动程序供应商通常不愿意noiseX在GLSL中实现,我正在寻找"图形随机化瑞士军刀"效用函数集,最好在GPU着色器中进行优化.我更喜欢GLSL,但任何语言代码都可以为我做,我可以将它自己翻译成GLSL.
具体来说,我希望:
a)伪随机函数 - 在[-1,1]或[0,1]上的N维,均匀分布,从M维种子计算出来(理想情况下是任何值,但我可以将种子限制在内比方说,0..1表示统一的结果分配).就像是:
float random (T seed);
vec2 random2 (T seed);
vec3 random3 (T seed);
vec4 random4 (T seed);
// T being either float, vec2, vec3, vec4 - ideally.
Run Code Online (Sandbox Code Playgroud)
b)像Perlin Noise这样的连续噪声 - 再次,N维,+ - 均匀分布,具有约束的值集合,并且看起来很好(配置外观像Perlin级别的一些选项也可能是有用的).我希望签名如下:
float noise (T coord, TT seed);
vec2 noise2 (T coord, TT seed);
// ...
Run Code Online (Sandbox Code Playgroud)
我不太关注随机数生成理论,所以我最急切地想要一个预先制定的解决方案,但我也很感激"这是一个非常好,高效的1D兰特()这些答案,让我解释一下你如何在它上面制作一个好的N维兰特()...".