生成介于-1和1之间的随机数?

Mag*_*igo -2 java random simplex

所以我发现这个有用的网站有很多代码和解释perlin和单纯形噪声.但是,代码是用不同的语言编写的.我能够为java重写大部分内容,但是有一个函数1.我不明白,而且2.我不知道如何在java中编写它.代码是:

function IntNoise(32-bit integer: x)             

    x = (x<<13) ^ x;
    return ( 1.0 - ( (x * (x * x * 15731 + 789221) + 1376312589) & 7fffffff) / 1073741824.0);    

  end IntNoise function
Run Code Online (Sandbox Code Playgroud)

同样,我不知道它是用什么语言编写的.但是,作者声明该函数返回-1到1之间的随机数.有人可以解释&符号的确切含义吗?为什么有一堆看似随机的数字呢?有没有一种简单的方法将其转换为java?

Pet*_*rey 5

内部部分对数字进行哈希处理,&并将/此哈希值转换为0到2之间的数字,因此当您执行1 - (..)-1到1之间的数字时.

获取-1和1之间的随机数的Java方法是

return Math.random() * 2 - 1;
Run Code Online (Sandbox Code Playgroud)

或者如果你需要使用种子

return new Random(x).nextDouble() * 2 - 1;
Run Code Online (Sandbox Code Playgroud)

  • Math没有构造函数.你的意思是`java.util.Random`吗? (3认同)