如何用特定的随机数填充数组(java)

时间:2014-06-13 16:00:44

标签: java arrays

我必须填充一行多维数组,整数从1到3完全随机。 示例:如果我打印该行,可以给出:1 2 2 1 2 3 1 2 3

现在要做到这一点,我认为以下代码可以工作:

private void fillArray()
    {
        for(int i=0; i<10;i++)
        {
         PincodeRandom[0][i]=i;
         PincodeRandom[1][i]= (int)Math.random()*3 +1;
        }
    }

然而,这导致仅用1(随机)整数填充整个第二行。 我该如何解决这个问题?

5 个答案:

答案 0 :(得分:1)

如果您要使用Random类,请确保在循环中创建外部实例,因为new Random()将系统时间用作种子。因此,如果在同一个tick中创建了两个random,它们将生成相同的随机数序列。

private void fillArray()
{
    Random rand = new Random();
    for(int i=0; i<10;i++)
    {
     PincodeRandom[0][i]=i;
     PincodeRandom[1][i]= rand.nextInt(2) + 1;
    }
}

答案 1 :(得分:0)

试试这个...

 Random r = new Random();
for(loop){
    PincodeRandom[1][i]= = r.nextInt(4 - 1) + 1;
}

答案 2 :(得分:0)

(int)会在您乘以3之前将Math.random()强制转换为0,从而导致0 * 3 + 1始终为1.尝试:

(int)(Math.random()*3) + 1;

答案 3 :(得分:0)

试试这个:

import java.util.Random; 


public class Test {
public static void main(String[] args){
    int[][] array = new int[2][10];
    Random rand = new Random();
    for(int i=0; i<10;i++)
    {
     array[0][i]=i;
     array[1][i]= (int)rand.nextInt(3) +1;
    }
    for (int j=0;j<10;j++){
    System.out.println(Integer.toString(array[1][j]));
    }
}
}

答案 4 :(得分:-1)

这是因为(int)Math.random()使它等于0,因为Math.random()总是在0和1之间。

而是导入java.util.Random类。

并使用它:     new Random()。nextInt(2)+1