How to generate random positive and negative numbers in Java
我正在尝试在基本数据类型short的范围内生成随机整数(-3276832767)。Java随机对象只生成正数。我该如何在那个时间间隔内随机创建数字呢?谢谢。
- 这让我想起了vb的rnd(),它只返回[0,1]中的值。
- 在Java中特定范围内如何生成随机整数的可能副本?
你随机抽取(0, 32767+32768),然后减去32768。
1 2
| Random random =new Random();
int randomNumber =(random. nextInt(65536)-32768); |
- scala>def mynextpositivenumber:int=r.nextint(65536)-32768 mynextpositivenumber:int scala>println(mynextpositivenumber)-17761 scala>println(mynextpositivenumber)-26558 scala>scala>println(mynextpositivenumber)-17758 scala>println(mynextpositivenumber)-823 scala>println(mynextpositivenumber)17370
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 ;
} |
- 你在哪里使用兰德?
- 例如,让我们以min=2和max=4为例。所以在最低随机数的情况下,假设0.001,*((4-(-2))+1)=7*0.001=(int)0.007=0,然后-2+0=-2。当最小值为2时,我们得到-2。这个公式出了点问题。
生成介于0和65535之间的数字,然后减去32768
这是一个我知道的老问题,但是…
- 这行不通。3=3-(3*2),3=-6.
- 错了。操作顺序。
- 不,还是不行。你的手术怎么样?
- 3-(3*2)=3-(6)=3
([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))