我试着做一个Loto游戏,我必须生成一张随机的卡,在第一个collum数字从1-9,第二个10-19一直到90。这张牌的另一个规则是,每行的随机位置上只能有5个数字,这就是我遇到的麻烦。
我从这个开始在每个collum中添加数字:
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个数字,所以没有意义...
欢迎任何帮助!
谢谢
for (int card = 1; card< 5; card++) {
List<Integer> numbers = new ArrayList<>();
for (int i = 0; i <= 8; i++) {
numbers.add(ThreadLocalRandom.current().nextInt(i*10+1,(i+1)*10));
}
Collections.shuffle(numbers);
System.out.println("Card #" + card);
for (int s = 0; s < 5; s++) {
int pick = numbers.get(s);
System.out.println("Column #" + (pick/10+1) + " = " + pick);
}
}
印刷品
Card #1
Column #3 = 28
Column #4 = 31
Column #2 = 19
Column #7 = 61
Column #9 = 88
Card #2
Column #2 = 18
Column #5 = 45
Column #4 = 37
Column #8 = 79
Column #3 = 29
Card #3
Column #1 = 9
Column #9 = 87
Column #8 = 78
Column #4 = 38
Column #7 = 67
Card #4
Column #5 = 49
Column #7 = 65
Column #4 = 35
Column #6 = 56
Column #8 = 72
您可以修改它,使其格式化为您喜欢的。
我是编程新手,我有一个任务要求从一维数组创建二维数组。我想到了这一点(没有任何外部来源的帮助,因为这会剥夺学习经验)。它适用于我们教授的测试输入,我只是想知道这是一个丑陋/低效的解决方案。 测试输入:twoDArray([1,2,3,4,5],3)输出将是:[[1,2,3],[4,5]]
为什么上面的代码不起作用,我应该如何纠正?
我在这个练习中的平均距离有问题。它应该接近N步的sqrt,但它更低。你能帮我找出我的错误在哪里吗? 二维随机游动。二维随机游动模拟了一个粒子在点网格中运动的行为。在每一步中,随机步行者以1/4的概率向北、向南、向东或向西移动,与之前的移动无关。确定N步后随机步行者离起点有多远(平均)。(理论答案:按sqrt(N)的顺序)
试图实施更大规模的井字游戏 这个游戏可以有超过3行和3列 每当发现4个连续的模式(水平,垂直或交叉) 选手是赢家 我已经找到了水平和垂直匹配的实现方法 但是找不到一种方法来识别2d数组中某个字符的交叉模式 考虑下面的二维数组 ` ` 如何检查“*”字符在这个2d数组中是否有四个连续的交叉模式
我试图将一个2d数组中的特定元素添加到另一个数组中,添加的过程是在数组的第一行选择最小的元素,并将该元素添加到同一位置的另一个2d数组中,例如: 2 22 3 5 1 54 7 3 10 20 22 21 这里,第一行中的最小元素是2,所以应该在相同的位置将2添加到另一个2d数组中,对于第二行,1是最小元素,所以我们也将1添加到另一个2d数组中,第三行中的最小元素是3,最后一行,第四行,最小的元素
问题内容: 我一直在谷歌上寻找答案,但似乎找不到一个万无一失的东西,而且真的负担不起将其弄乱(进入生产站点)。 我所拥有的是具有20多个过滤器的高级搜索,它返回一个包含ID和Distance的数组。我需要做的是将这些结果混洗以每次随机显示。目前我得到的数组是: 我需要做的是每次都对它们进行随机化或排序,但要保持id和距离对,即: 谢谢 :) 问题答案: 在第一个用户后下的文件: 在保留键,值对的同