在java中,将非重复随机数添加到2D数组的最简单方法

在java中,将非重复随机数添加到2D数组的最简单方法,java,arrays,duplicates,numbers,2d,Java,Arrays,Duplicates,Numbers,2d,我正在尝试找出最简单的添加方法,用不重复的数字填充这个2D数组 我曾尝试使用一个布尔方法在添加值之前检查该值,如果该值已经存在,但我无法使其工作 int[][] x = new int[R][C]; for (int i = 0; i < x.length; i++) { for (int j = 0; j < x[i].length; j++) { double z = (Math.random() * ((30 * (j + 1)) - ((30 * j

我正在尝试找出最简单的添加方法,用不重复的数字填充这个2D数组

我曾尝试使用一个布尔方法在添加值之前检查该值,如果该值已经存在,但我无法使其工作

int[][] x = new int[R][C];

for (int i = 0; i < x.length; i++) {
    for (int j = 0; j < x[i].length; j++) {
        double z = (Math.random() * ((30 * (j + 1)) - ((30 * j) + 1)) + 1 + ((30 * j) + 1));
        card[i][j] = (int) z;
    }
}
int[]x=新的int[R][C];
对于(int i=0;i
您肯定希望使用来获得
int的均匀分布。很可能您需要一个
集合
来跟踪已经生成的数字

int[][] cards = new int[ROW][COL];
Random r = new Random();
Set<Integer> generated = new HashSet<>();
for (int i = 0; i < ROW; i++) {
  for (int j = 0; j < COL; j++) {
    int n;
    do {
      n = r.nextInt();
    } while (generated.contains(n));
    generated.add(n);
    cards[i][j] = n;
  }
}
int[][]卡=新的int[行][COL];
随机r=新随机();
Set generated=新HashSet();
对于(int i=0;i
我要说的最好方法是使用
设置
数据结构

int row = 2;
int col = 2;
Set<Set<Integer>> rowSet = new HashSet<>();

 for (int i = 0; rowSet.size() < row; i++) {
        Set<Integer> colSet = new HashSet<>(); 

    for (int j = 0; colSet.size() < col; j++) {
    double x = (Math.random() * ((15 * (j + 1)) - ((15 * j) + 1)) + 1 + ((15 * j) + 1));
    colSet.add((int) x);
  }
   rowSet.add(colSet);
}

请相应地阅读和编辑你的文章。这样它就不再是随机的了。这个问题是关于使用随机数的。
int[][] arr = set.stream()
                     .map(i->i.stream()
                             .mapToInt(Integer::intValue)
                             .toArray())
                     .toArray(int[][]::new);