Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 随机数范围为1-8,期望输出为1,1,2,2,4,4,3,3,5,5,6,6,7,7,8,8?_Java_Arrays - Fatal编程技术网

Java 随机数范围为1-8,期望输出为1,1,2,2,4,4,3,3,5,5,6,6,7,7,8,8?

Java 随机数范围为1-8,期望输出为1,1,2,2,4,4,3,3,5,5,6,6,7,7,8,8?,java,arrays,Java,Arrays,我有一个关于如何生成一个范围为1-8的随机数的问题,我只需要2对随机数,而不是1,1,1或3,3,3。以下是我已经导入java.util.random的代码: int[][] displayArray = new int[4][4]; int[][] fieldArray = new int[4][4]; //generates random Values where "i" represents rows and "j" represent

我有一个关于如何生成一个范围为1-8的随机数的问题,我只需要2对随机数,而不是1,1,1或3,3,3。以下是我已经导入java.util.random的代码:

          int[][] displayArray = new int[4][4];
        int[][] fieldArray = new int[4][4];

        //generates random Values where "i" represents rows and "j" represents columns
        for (int i = 0; i < fieldArray.length; i++) {
            for (int j = 0; j < fieldArray.length; j++) {
                fieldArray[i][j] = (int) (Math.random() * 8); //generates table with randomized numbers.
            }
        }

        //Print the values
        for (int i = 0; i < fieldArray.length; i++) {          
            for (int j = 0; j < fieldArray.length; j++) {
                 System.out.print("[" + fieldArray[i][j] + "]" + "\t");                     
                }
       // Every time we finish printing a row we jump to the next line.
            System.out.print("\n");
            }

  }
int[]displayArray=newint[4][4];
int[][]字段数组=新的int[4][4];
//生成随机值,其中“i”表示行,“j”表示列
对于(int i=0;i
这个

这个


您不想要随机数,而是想要随机的数字顺序
Collections.shuffle()
提供了一种方法(在
列表中随机化顺序)

此代码适用于任何四元大小(>0),创建一个四元数组,填充数字,从1开始,每个数字包含两次,如果可能(对于奇数四元大小,您会得到奇数):


您不想要随机数,而是想要随机的数字顺序
Collections.shuffle()
提供了一种方法(在
列表中随机化顺序)

此代码适用于任何四元大小(>0),创建一个四元数组,填充数字,从1开始,每个数字包含两次,如果可能(对于奇数四元大小,您会得到奇数):


有什么问题?请更新问题。尝试随机,这是一个开始@CodingEnthusiast的好地方。如果你查看他的代码,你会看到他在使用随机。他的问题是他不想要第三行整数。问题是什么?请更新问题。尝试随机,这是一个开始@CodingEnthusiast的好地方。如果你查看他的代码,你会看到他在使用随机。他的问题是他不想要第三行整数。
for (int j = 0; j < fieldArray.length; j++) {
for (int j = 0; j < fieldArray[i].length; j++) {
Random rand = new Random();
int val = rand.nextInt(8) + 1; // <-- a random number between 1 and 8.
fieldArray[i][j] = 1 + (int) (Math.random() * 8);
    int quadSize = 4; //4x4 = 16 tiles, containing the numbers 1-8 twice

    List<Integer> values = new ArrayList<>(quadSize * quadSize);

    // add  number twice (1,1,2,2, ....)
    int num = 0;
    boolean first = false;
    while (values.size() < quadSize * quadSize) {
        if (!first) {
            num++;
        }
        values.add(num);
        first = !first;
    }

    // Shuffle the values (random order)
    Collections.shuffle(values);

    // fill into two-dimensional array
    int[][] fieldArray = new int[quadSize][quadSize];
    int index = 0;
    for (int value : values) {
        fieldArray[index / quadSize][index % quadSize] = value;
        index++;
    }
[5] [7] [1] [6] 
[2] [3] [8] [3] 
[6] [8] [5] [1] 
[4] [2] [7] [4]