You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成元素1-8各出现两次的4×4随机矩阵?

解决方案

要实现1-8每个数字恰好出现两次的4×4随机矩阵,核心思路是先构造符合次数要求的元素集合,再打乱顺序后填充矩阵,具体步骤如下:

  1. 构造初始元素集合:生成包含1到8每个数字各两次的列表,确保元素总数为16(4×4),满足矩阵大小要求。
  2. 随机打乱集合:利用Collections.shuffle()方法对元素列表进行随机打乱,保证每次运行的排列状态不同。
  3. 填充二维矩阵:将打乱后的列表元素依次填入4×4矩阵中。

完整代码

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.Arrays;

public class RandomMatrix {
    public static void main(String[] args) {
        // 构造包含1-8各两次的元素列表
        List<Integer> elements = new ArrayList<>();
        for (int i = 1; i <= 8; i++) {
            elements.add(i);
            elements.add(i);
        }

        // 随机打乱元素顺序
        Collections.shuffle(elements, new Random());

        // 填充4×4矩阵
        int[][] mat = new int[4][4];
        int index = 0;
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                mat[i][j] = elements.get(index++);
            }
        }

        // 打印矩阵
        for (int i = 0; i < 4; i++) {
            System.out.println(Arrays.toString(mat[i]));
        }
    }
}

原代码问题说明

  • 原代码使用r.nextInt(8)生成的是0-7的随机数,不符合需求中的1-8范围。
  • 直接随机填充每个位置无法控制数字出现次数,会导致部分数字出现次数过多或过少。

内容的提问来源于stack exchange,提问作者User7100727193652782638430

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:25:14