如何在java中生成随机的正数和负数

我试图在原始数据类型short的范围(-32768,32767)上生成随机整数。 java Random对象仅生成正数。 如何在该间隔内随机创建数字? 谢谢。

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

 Random random=new Random(); int randomNumber=(random.nextInt(65536)-32768); 
 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

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

 n=n-(n*2) 

([我的双兼容原语类型])(Math.random()* [我的最大值] *(Math.random()> 0.5?1:-1))

例:

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

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

如果人们对双版本感兴趣(请注意,如果传递MAX_VALUE或MIN_VALUE则会出现故障):

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