我有一个可以容纳5个整数的数组。在for循环中,我使用Math.random()用0到10之间的随机整数值填充数组,可以是正数或负数。我怎样才能收到负值?有人建议我将-1乘以公式,用正值和负值填充数组但是当我这样做时,我在数组中的所有值都是负数。我认为问题出在这一行
int r = 0 + (int) (Math.random() * 10 *(-1));
这是代码:
public class Random
{
public static void main(String [] args)
{
int [] arr= new int[5];
for(int k=0; k<arr.length; k++)
{
int r = 0 + (int) (Math.random() * 10 *(-1));
arr[k] = r;
}
int j = 0;
while(i<arr.length) {
System.out.print(arr[i] + " ");
j++;
}
}
}
现在我的输出是-7 -3 -3 -5 -6
我希望我的输出为7 -3 3 -5 6
答案 0 :(得分:3)
如果你想要-10到10之间的数字:
int r = (int) (Math.random() * 21) - 10;
由于Math.random()
永远不会返回1.0,(int) (Math.random() * 21)
会返回0到20之间的整数,并且在减去10之后,你会得到你想要的结果。
另一种方法是使用java.util.Random
:
Random rand = new Random();
int r = rand.nextInt(21) - 10;
答案 1 :(得分:0)
您可以生成0到20之间的随机数,并从中减去10。这样做你将获得-10到+10之间的随机数:
int r = (int) ( Math.random() * 20 ) - 10;
答案 2 :(得分:0)
您只需修改以下代码
public class Random
{
public static void main(String[] args) {
int[] arr = new int[5];
for(int k=0; k<arr.length; k++)
{
int r = 0 +(int)(Math.random()*10*(k % 2 == 0? 1:-1));
arr[k] = r;
}
int j = 0;
while(j<arr.length)
{
System.out.print(arr[j]+ " ");
j++;
}
System.out.println();
}
}