我正在用数字制作一个数字宾果游戏板,我希望所有的数字都是唯一的。因此,我试图创建一种算法,该算法将在列中循环,找到重复的数字,然后用两个特定数字之间的随机数替换它们。
这就是我目前所拥有的:
public void bingoBoardGenrerator(int[][] bingoBoard) {
for (int row = 0; row < bingoBoard.length; row++) {
int random = (int) (Math.random() * 15) + 1;
bingoBoard[row][0] = random;
for (int j = 1; j < bingoBoard.length; j++) {
if (bingoBoard[j][0] == random) {
bingoBoard[row][0] = (int) (Math.random() * 15) + 1;
}
}
输出应该是这样的,但列中没有重复的数字:
Free space = 0
B I N G O
5 25 36 53 61
9 19 36 60 62
1 17 0 54 63
6 20 37 57 71
5 19 39 57 69
任何帮助都将不胜感激!
对于"B";列:
- 使用整数1-15创建一个
ArrayList
- 然后使用
Collections.sort()
对数字进行随机化 - 然后从
ArrayList
中取出前5个数字,并将它们添加到您的Array
中
对I、N、G、O列重复上述步骤,每个列使用适当的数字范围。
或者另一种方法(对于B(是:
- 创建集合
- 生成1-15范围内的随机数
- 将数字添加到集合
- 如果集合包含5个数字,则完成。如果没有,请重复步骤2-4
对其他列重复上述步骤。