【问题标题】:Generating random numbers between 2 values in 2d array在二维数组中的两个值之间生成随机数
【发布时间】:2015-04-10 16:54:14
【问题描述】:

最近我开始学习 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();
    }
    }   
}

我正在尝试模拟一个累积奖金,我想在我创建的所有二维数组中生成 1 到 9 之间的数字。但是我不知道如何生成 1 到 9 之间的数字,我只创建了范围 0-100-9

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

我也尝试过使用:

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

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

【问题讨论】:

  • 考虑在随机结果中添加“1”以更改“下”边界。
  • @Jägermeister 你是什么意思?
  • @reyareya 我认为他的意思是生成一个介于 0-8 之间的随机数,然后将该结果加 1。

标签: java multidimensional-array


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你可以像这样生成随机数:

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

    或者

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

    【讨论】:

    • 他已经在生成它听起来的数字,但它是 0-9,而他想要 1-9。
    【解决方案3】:

    从 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};
    

    【讨论】:

    • 天啊!!!谢谢!就像看起来/听起来一样简单,这非常有效。我从没想过使用简单的“+1”会立即起作用。我认为这是我使用的整数的问题.....
    • 也许您只是认为Random.nextInt() 方法总是返回一个至少为 1 的值? ;) 我建议您阅读 Java API,它非常有助于准确了解您可以使用其标准库做什么。 docs.oracle.com/javase/7/docs/api/java/util/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    相关资源
    最近更新 更多