我需要随机选择一个数字(这是在Java中使用Math.random()实现的),该数字应在-N和N之间。具体来说,在当前情况下,我需要在-1和1之间选择一个随机数。我找到的所有结果都只介绍了如何在一些正数之间找到随机数。
目前,我正在使用以下语句,但它只涵盖了我需要的一半内容。
目前,我正在使用以下语句,但它只涵盖了我需要的一半内容。
double i = Math.random();
double i = Math.random();
生成一个在-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;
}
-n <= r < n
。 - Joachim Isaksson生成在范围(min,max)内均匀分布的随机数的一般公式为:
min + rand.nextDouble() * (max - min)
max == -min == N
。只需插入值并简化即可:2 * N * rand.nextDouble() - N
只需使用:
2 * Math.random() - 1
试试这个:
double n = 1.0;
double range = 2 * n;
double value = range * Math.random() - n;
您可以修改n
的值来改变生成的最大/最小值,例如如果您需要在范围[-10, 10)
内生成随机数,则将n = 10.0;
使用随机函数
(0, 32767+32768) then subtract by 32768
或者生成介于0和65535之间的数字,然后减去32768
double i = Math.random() * (Math.random() > 5 ? -1 : 1);
。(虽然这比典型解决方案提供了2倍的数字量) - Ryan Amos