如何获得可以是正面还是负面的随机值?

时间:2014-09-23 11:41:13

标签: java arrays loops for-loop

我有一个可以容纳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

3 个答案:

答案 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();
        }

    }