我是Java的新手,我坚持这个,我使用的是公式:
min + (int)(Math.random()*(max-min+1))
我必须编写语句,将随机整数分配给以下范围内的变量x
1 < x <= 8
1分是min,8分是max
我是否更正为1 + (int)(Math.random()*(8-1+1))
?
-5 < x <= 3
3为最小值,-5为最大值
这将是3 + (int)(Math.radom()*(-5-3+1))
?
非常感谢任何帮助。
答案 0 :(得分:3)
您希望公式采用[0..1)
范围内的实数,并返回[1..8]
范围内的整数。
random()
选择实数时,范围为[0..1)
,[0.0 .. 8.0)
范围内的值。(int)
,你有[0 .. 7]
范围内的整数,(int)
轮。答案 1 :(得分:0)
使用以下代码。它将生成0到最大值之间的nos。
Random generator = new Random(); //Creates a new random number generator
for(int i=0; i<100; i++){
/**
*Returns a pseudorandom, uniformly distributed int value
* between 0 (inclusive) and the specified value (exclusive), drawn from
* this random number generator's sequence
*/
System.out.println(generator.nextInt(100));
}
答案 2 :(得分:0)
如果使用 JDK 1.7 版本,那么您可以使用一行代码来实现此类功能:
ThreadLocalRandom.current()。nextInt(min,max)+1
如果JDK版本低于1.7,我们可以使用以下方式实现它。
随机随机= new Random();
random.nextInt(max - min)+ min +1;
2.获取范围 [ min,max )的随机值
使用, ThreadLocalRandom.current()。nextInt(min,max)
或
random.nextInt(max - min)+ min;
答案 3 :(得分:0)
Math.random()在0到1之间给出。乘以你的范围,范围的大小,而不是绝对值。如果你想1-10那是9,如果你想要0-10那是10,如果你想要5-7那是2,等等。
然后加或减从0到起始值。
如果你想要0-9那么你已经完成了(你应该在上一步中乘以9)
如果你想要1-10则添加1
如果你想要-5到5然后减去5
如果你想要5-7那么(Math.random()* 2)+5;