java中如何产生随机正负数

How to generate random positive and negative numbers in Java

本问题已经有最佳答案,请猛点这里访问。

我正在尝试在基本数据类型short的范围内生成随机整数(-3276832767)。Java随机对象只生成正数。我该如何在那个时间间隔内随机创建数字呢?谢谢。


你随机抽取(0, 32767+32768),然后减去32768


1
2
Random random=new Random();
int randomNumber=(random.nextInt(65536)-32768);


1
2
3
4
5
public static int generatRandomPositiveNegitiveValue(int max , int min) {
    //Random rand = new Random();
    int ii = -min + (int) (Math.random() * ((max - (-min)) + 1));
    return ii;
}


生成介于0和65535之间的数字,然后减去32768


这是一个我知道的老问题,但是…

1
n=n-(n*2)


([my double compatible primitive type here])(math.random()*[my max value here]*(math.random()>0.5?)1:- 1)

例子:

1
2
// need a random number between -500 and +500
long myRandomLong = (long)(Math.random() * 500 * (Math.random() > 0.5 ? 1 : -1));


如果人们对双版本感兴趣(请注意,如果传递了max_值或min_值,则会出现这种情况):

1
2
3
4
private static final Random generator = new Random();
public static double random(double min, double max) {
    return min + (generator.nextDouble() * (max - min));
 }

(math.floor((math.random()*2))>0?1:-1)*math.floor((math.random()*32767))