java Math.random()从-N到N
我需要在-N和N之间随机选取一个数字(在java中,使用Math.random())。具体来说,在本例中,我需要在-1和1之间选取一个随机数。我发现的所有结果都解释了如何在一些正数之间找到一个随机数 现在我用的是这句话,它只涵盖了我需要的一半java Math.random()从-N到N,java,Java,我需要在-N和N之间随机选取一个数字(在java中,使用Math.random())。具体来说,在本例中,我需要在-1和1之间选取一个随机数。我发现的所有结果都解释了如何在一些正数之间找到一个随机数 现在我用的是这句话,它只涵盖了我需要的一半 double i = Math.random(); 只需使用: 2 * Math.random() - 1 对于-n和n之间的随机数: /** * @return a random number, r, in the range -n <= r
double i = Math.random();
只需使用:
2 * Math.random() - 1
对于-n和n之间的随机数:
/**
* @return a random number, r, in the range -n <= r < n
*/
public static double getRandom(double n) {
return Math.random()*n*2 - n;
}
/**
*@返回一个随机数r,范围为-n试试这个:
double n = 1.0;
double range = 2 * n;
double value = range * Math.random() - n;
您可以修改n
值以更改生成的最大值/最小值,例如,如果您需要范围[-10,10)
中的随机数,则让n=10.0;
使用random on
(0, 32767+32768) then subtract by 32768
或
生成介于0和65535之间的数字,然后减去32768
生成在一定范围内均匀分布的随机数(最小值、最大值)的一般公式为:
在您的情况下,max==-min==N
。只需插入值并简化:
2 * N * rand.nextDouble() - N
挑刺,但范围实际上是-n真的,但等式成立的概率约为40亿分之一,极限实际上是最大值的2倍。也许它会被命名为range
?恶心,恶心,但只是为了好玩:double i=Math.random()*(Math.random()>5?-1:1);
。(尽管与典型解决方案相比,这提供了2倍的数量)
2 * N * rand.nextDouble() - N