首页 > 解决方案 > 对如何为数组中的每一列生成唯一的随机数感到困惑

问题描述

我正在编写一个程序来为课堂作业创建宾果游戏,但是我有点坚持如何为 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.

标签: java

解决方案


信息:

典型的宾果游戏使用数字 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);
    }

推荐阅读