我正在尝试做一个乐透游戏,我必须生成一张随机卡,第一列数字从 1-9,第二列 10-19 一直到 90。卡的另一个规则是它只能有每行随机位置有5个数字,这就是我遇到的麻烦。
我已经开始在每一列中输入数字:
int[][] numberCard = new int[3][9];
for (int i = 0; i < numberCard.length; i++) {
numberCard[i][0] = randInt(1, 9);
}
for (int j = 0; j < numberCard.length; j++) {
numberCard[j][1] = randInt(10, 19);
}
然后在数组的每一行的一个数字位置放置 5 个数字我试过这个:
//Five numbers first line
Random random0 = new Random();
int randomLocation = 0;
while (randomLocation < 5) {
int z0 = random0.nextInt(numberCard.length);
int b0 = random0.nextInt(numberCard[0].length);
if (numberCard[z0][b0] > 0) {
numberCard[z0][b0] = 0;
randomLocation++;
}
}
//Five numbers second line
Random random1 = new Random();
int randomLocation1 = 0;
while (randomLocation1 < 5) {
int z1 = random1.nextInt(numberCard.length);
int b1 = random1.nextInt(numberCard[1].length);
if (numberCard[z1][b1] > 0) {
numberCard[z1][b1] = 0;
randomLocation1++;
}
}
然后第三个也是一样。
输出:
0 | 18 | 0 | 0 | 46 | 0 | 61 | 72 | 88 |
0 | 18 | 0 | 31 | 0 | 55 | 0 | 0 | 0 |
0 | 0 | 23 | 34 | 45 | 0 | 0 | 0 | 80 |
问题是有时我得到 5 个数字,有时是 6 个,有时是 4 个,而有时我在每行中得到完美的 5 个数字。更令人沮丧的是,不工作只是有时工作......
我想,我认为这是因为随机数有时会重复,所以它们会进入相同的索引,但有时我有超过 5 个数字,所以这没有任何意义。
预期的正确输出:
0 | 18 | 23 | 30 | 48 | 0 | 0 | 76 | 0 |
0 | 12 | 24 | 0 | 0 | 58 | 61 | 78 | 0 |
1 | 17 | 0 | 0 | 42 | 54 | 0 | 0 | 86 |