在2d数组中生成2个值之间的随机数

时间:2015-04-10 16:54:14

标签: java multidimensional-array

最近我开始学习Java并且遇到了很多问题。我试过在网站上搜索,但我似乎无法得到我需要的答案。抱歉,如果有答案,那就是我的错误。

请先查看我的代码:

import java.util.Random;


public class Test {
    public static void main (String args[]) {
        Random num = new Random();
        int[][] multi = new int [3][];
        int test = 1;             // comments for stackoverflow questions   
        int test2 = 10;           // how can i create something that will range from 1-9?
        int test3 = test2-test;   // trying this has always generated 0-9 instead

    multi[0] = new int [] {num.nextInt(test3), num.nextInt(test3), num.nextInt(test3)};
    multi[1] = new int [] {num.nextInt(test3), num.nextInt(10), num.nextInt(10)};
    multi[2] = new int [] {test3, test3, num.nextInt(10)};

// PLEASE IGNORE THE 2D ARRAYS, it's just something I am testing on

    int rows = 3;
    int columns = 3;

    for(int i=0; i<rows; i++) {
        for (int j=0; j<columns; j++) {
            System.out.print(multi[i][j] + "\t");
        }
        System.out.println();
    }
    }   
}

我正在尝试模拟累积奖金,我希望在我创建的所有2D数组中生成1到9之间的数字。但是我不知道如何在 1到9 之间生成数字,我只创建范围 0-10 0-9

我的想法是,一旦我完成了这个范围 1-9 的2D数组,那么我就可以使用一定数量的 if-else 语句来使用户只要中心行或对角线行有3个相同的数字,就赢得累积奖金。

我也尝试过使用:

int test3 = num.nextInt(test2-test+1)-test;

这会在 1-9 之间生成数字,但是如果我要全部使用它,它将始终为我生成相同的数字,否则由于负数而给出异常。

3 个答案:

答案 0 :(得分:1)

如果您只想要包含1和9之间的随机数,这应该会有所帮助:

Random r = new Random();
int num = r.nextInt(9) + 1;

答案 1 :(得分:0)

从1-9生成值:

Random random = new Random();
int n = random.nextInt(9) + 1;

要在您的情况下应用此功能:

multi[0] = new int [] 
   {num.nextInt(9) + 1, num.nextInt(9) + 1, num.nextInt(9) + 1};

答案 2 :(得分:0)

您可以生成如下随机数:

Math.rand() * i // Generate number between 0 and i-1

  Math.rand() * i + 1 // Generate number between 1 and i