java - java中不重复的随机数
问题描述
我想在二维数组中生成从 1 到 n^2 不重复的随机数(例如 n=3,1 到 9 范围内的数字),我不想使用列表,但是我的代码生成了重复的数字,如何我可以解决这个问题吗?这是我的代码:
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
array[i][j] = rand.nextInt((n * n) - 1) + 1;
}
}
解决方案
一种方法是生成一个顺序集合,将其打乱并将打乱的元素放入数组中。
List<Integer> numbers = new ArrayList<>();
for (int i = 1; i <= n * n; i++) {
numbers.add(i);
}
Collections.shuffle(numbers);
int index = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
array[i][j] = numbers.get(index);
index++;
}
}
推荐阅读
- python - 为什么不先将迭代值分配给变量就无法比较迭代值?
- reactjs - 材质 UI 菜单组件中的 onChange
- python - 如何将图表从 Google Colab 导出到 Excel
- asp.net - 我如何根据 if 日期 inasp.net mvc 显示 HTML 代码块
- python - 对列表中的所有元素应用特定更改(Python)
- python - 如何从文件中制作字典?
- python - 如何处理不一致的 CSV 列
- javascript - 如何从谷歌脚本发送错误状态代码,如错误请求(400)?
- python - 如何使用 Python 创建列并将键和值设置为 redis
- python - 单击 Selenium 中的链接:find_element_by_link_text 不起作用