java - 对如何为数组中的每一列生成唯一的随机数感到困惑
问题描述
我正在编写一个程序来为课堂作业创建宾果游戏,但是我有点坚持如何为 5x5 数组中的每一列设置不同的数字。我现在拥有的代码是为数组创建随机数,但是有些运行在一列中有相同的数字。任何帮助将不胜感激。
下面是前两列的一些编码。
public static void newCard() {
System.out.println("B" + " " + "I" + " " + "N" + " " + "G"
+ " " + "O");
int card [][] = new int[5][5];
for (int i = 0; i < card.length; i++) {
for (int j = 0; j < card[i].length; j++) {
card[i][0] = (int)(Math.random() * 15 + 1);
if (card[i][0] == card[i][j]) {
card[i][0] = (int)(Math.random() * 15 + 1);
card[i][1] = (int)(16 + Math.random() * 15);
if (card[i][1] == card[i][j]) {
card[i][1] = (int)(16 + Math.random() * 15);
}
//New Code
public static void main(String[] args) {
int[][] card = newCard();
System.out.println("B I N G O");
for (int i = 0; i < card.length; i++) {
for (int j = 0; j < card[i].length; j++) {
System.out.printf("%2d ", card[j][i]);
}
System.out.println();
}
Scanner input = new Scanner(System.in);
while (calledCard()) {
System.out.println("Enter the called number: ");
int number = input.nextInt();
}
}
public void calledCard(int number) {
for(int i = 0; i <= 4; i++) {
for(int j = 0; j <= 4; j++) {
if(newCard()[i][j]==number) {
newCard()[i][j] = 0;
} else {
continue;
}
}
}
}
The results I get are allowing each column to have some of the same numbers shown.
解决方案
信息:
典型的宾果游戏使用数字 1 到 75。卡片的五列从左到右分别标记为“B”、“I”、“N”、“G”和“O”。中心空间通常标记为“空闲”或“空闲空间”,并被视为自动填充。卡片上可以出现的打印数字范围通常由列限制,“B”列仅包含 1 到 15 之间的数字,“I”列仅包含 16 到 30,“N”列包含 31 到 45 ,“G”包含 46 到 60,“O”包含 61 到 75。
您可以使用Collections.shuffle
随机化每个列表,这里是如何使用它:
public static void newCard() {
List<List<Integer>> nums = new ArrayList<>();
int k=1;
for (int i = 0; i <5; i++) {
nums.add(new ArrayList<>());
for(int j=0; j<15; j++){
nums.get(i).add(k++);
}
// System.out.println(nums.get(i));
}
System.out.println("B" + " " + "I" + " " + "N" + " " + "G"
+ " " + "O");
int card [][] = new int[5][5];
for (int i = 0; i < card.length; i++) {
Collections.shuffle(nums.get(i));
}
for (int i = 0; i < card.length; i++) {
for (int j = 0; j < card[i].length; j++) {
card[i][j] = nums.get(j).get(i);
//System.out.print(card[i][j]+" ");
}
//System.out.println("");
}
// System.out.println(card);
}
推荐阅读
- regex - 匹配字符串中被相同文本(例如,单位、货币)包围的数字
- solr - 在 Solr 中如何计算“生存时间”(TTL) 中文档的过期字段值?
- python - AttributeError:keras.backend,没有属性'eager'
- python - 根据两个日期时间值对数据框进行分组
- c# - c# / .net core 中的 DB2 入门
- flutter - 如何获取父路由的路由参数?
- python - Django ORM:具有来自另一个模型的项目列表的模型
- java - 一旦签名密钥更改,ANDROID_ID 会更改,但系统更新会更改签名密钥吗?
- reactjs - 类型不可分配(React + Typescript + Firebase)
- r - 文本中新列中的标志等于多列之一中的“是”