我对 Java 很陌生,我坚持这一点,我使用的是公式:
min + (int)(Math.random()*(max-min+1))
我必须编写将随机整数分配给以下范围内的变量 x 的语句
1 < x <= 8
1 为最小值,8 为最大值我是正确的
1 + (int)(Math.random()*(8-1+1))
吗?-5 < x <= 3
3 是最小值,-5 是最大值这会是
3 + (int)(Math.radom()*(-5-3+1))
什么?
任何帮助将不胜感激。
我对 Java 很陌生,我坚持这一点,我使用的是公式:
min + (int)(Math.random()*(max-min+1))
我必须编写将随机整数分配给以下范围内的变量 x 的语句
1 < x <= 8
1 为最小值,8 为最大值
我是正确的1 + (int)(Math.random()*(8-1+1))
吗?
-5 < x <= 3
3 是最小值,-5 是最大值
这会是3 + (int)(Math.radom()*(-5-3+1))
什么?
任何帮助将不胜感激。
您想要一个公式在范围内取一个实数,并在该范围内[0..1)
返回一个整数[1..8]
。
random()
picks a real number it the range [0..1)
,[0.0 .. 8.0)
。(int)
,你在范围内有一个整数[0 .. 7]
,(int)
因为使用“地板”阶跃函数转换为圆形。使用以下代码。它将生成介于 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));
}
如果使用JDK 1.7版本,则可以使用一行代码来实现这样的功能:
ThreadLocalRandom.current().nextInt(min, max)+1
如果JDK版本在1.7以下,我们可以通过以下方式实现。
随机随机=新随机();
random.nextInt(max - min) + min +1;
2.获取范围为[ min, max )的随机值
使用, ThreadLocalRandom.current().nextInt(min, max)
或者
random.nextInt(max - min) + min ;
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;