我试图在原始数据类型short的范围(-32768,32767)上生成随机整数。 java Random对象仅生成正数。如何在该间隔内随机创建数字?感谢。
答案 0 :(得分:52)
您在(0, 32767+32768)
上随机,然后按32768
答案 1 :(得分:22)
Random random=new Random();
int randomNumber=(random.nextInt(65536)-32768);
答案 2 :(得分:5)
public static int generatRandomPositiveNegitiveValue(int max , int min) {
//Random rand = new Random();
int ii = -min + (int) (Math.random() * ((max - (-min)) + 1));
return ii;
}
答案 3 :(得分:4)
生成0到65535之间的数字,然后只减去32768
答案 4 :(得分:4)
这是一个我知道的老问题,但是嗯......
n=n-(n*2)
答案 5 :(得分:1)
([我的双兼容原语类型])(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));
答案 6 :(得分:0)
(Math.floor((Math.random()* 2))> 0?1:-1)* Math.floor((Math.random()* 32767))
答案 7 :(得分:0)
如果人们对双版本感兴趣(请注意,如果传递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));
}