我需要帮助创建一个没有重复号码的宾果卡。我仍然是Java编程的新手。到目前为止,这是我提出的唯一想法。我非常感谢你的帮助。
import java.util.Arrays;
import java.util.Random;`
import static java.lang.System.out;
public class Exercise {
/**
* @param args
*/
public static void main(String[] args) {
Random rd = new Random();
int[][] bingo = new int[5][5];
String title = "B\tI\tN\tG\tO";
out.print(title);
for (int i = 0; i < bingo.length; i++) {
out.println();
int num = 1;
for (int idx = 0; idx < bingo[i].length; idx++) {
if (i == 2 && idx == 2) {
out.print("X\t");
continue;
}
out.print(rd.nextInt(15)+ num + "\t");
num += 15;
}
}
}
}
答案 0 :(得分:2)
将尚未拍摄的数字存储在列表中,然后将其随机添加到卡中。添加数字时,将其从列表中删除,因此不会再次选择它。
像这样:
List<Integer> numbers = new ArrayList<Integer>() {{
add(1);
add(2);
add(3);
...
add(70);
}};
for (int x = 0; x < 5; x++) {
for (int y = 0; y < 5; y++) {
bingo[x][y] = numbers.get(numbers.remove(new Random().nextInt(numbers.size()));
}
}
希望有所帮助。
答案 1 :(得分:1)
这样做的常用方法是填写一个包含您要使用的所有数字的列表,然后使用Collections.shuffle
对其进行随机播放。
private static class Bingo {
final int[][] card;
public Bingo(int size) {
// Create it.
card = new int[size][size];
// Fill it with 1, 2, ... by
// First create my seed list of all numbers I want.
List<Integer> seed = new ArrayList<>(size * size);
for (int i = 0; i < size * size; i++) {
seed.add(i+1);
}
// Shuffle it.
Collections.shuffle(seed);
// Fold it into my card.
for (int i = 0; i < seed.size(); i++) {
card[i / size][i % size] = seed.get(i);
}
}
@Override
public String toString() {
return Arrays.deepToString(card);
}
}
public void test() {
Bingo bingo = new Bingo(5);
System.out.println(bingo);
}