Java随机分配二维数组

时间:2015-02-04 02:10:16

标签: java random multidimensional-array

我正在研究练习数组和数组列表,形成了Deitel第9版的Java How to program。这是我的问题后面的代码

public static void main(String[] args) {
    // TODO code application logic here
    Random r = new Random();

    int[][] sales = new int[5][4];

    // display salesnames
    System.out.println("\t\t  1.Tom   2.Eva   3.Jan   3.Roy    Total);     

    // declare ProductCounter
    int proCount = 1;

    // display array
    for (int row = 0; row < sales.length; row++) {
        System.out.print("Product " + proCount + "\t");

        for (int column = 0; column < sales[row].length; column++) {
            sales[row][column] = 0 + r.nextInt(2);
            System.out.printf("  %d\t", sales[row][column]);

        }
        proCount++;
        System.out.println();
    }

}

}

在第二个for循环后,我用随机数0或1填充数组,结果如下:

                  1.Tom   2.Eva   2.Jan   4.Roy    Product Totals
   Product 1      1       0       1       0 
   Product 2      0       0       1       1 
   Product 3      0       1       0       1 
   Product 4      0       0       0       1 
   Product 5      0       0       0       0 

问题:每个销售人员每天传递0-5个销售单

问题:这个随机产品每件产品只能随机播放一次。我如何编码使它在0-5之间变为random,这也意味着它可能是产品编号2的3,因为现在它只决定一个产品是否被出售一次。

5 个答案:

答案 0 :(得分:1)

nextInt采用一个参数来定义生成的随机数的上限。

答案 1 :(得分:0)

sales[row][column] = 0 + r.nextInt(6);

这行代码将允许您生成随机整数(0~5)。

答案 2 :(得分:0)

              1.Tom   2.Eva   3.Jan   3.Roy    Product Total
Product 1     1       0       3       3 
Product 2     2       0       0       5 
Product 3     5       0       5       1 
Product 4     4       4       3       0 
Product 5     1       3       3       1 

如果我使用r.nextInt(6);

,这看起来如何

一个人的总销售额需要为5。

答案 3 :(得分:0)

我猜测你的问题实际上是&#34;我怎样才能生成5个随机数,每个数可以是0-5,但加起来不超过5&#34;。请确认您在评论中的含义是否正确。

但如果这是你的意思,那么如果没有关于你如何分配随机数的更多信息,就无法回答。例如,一个简单的答案是:

int numbers[5];
int total = Random.nextInt(6);
for (int i = 0; i < numbers.length && total > 0; i++) {
    numbers[i] = Random.nextInt(total);
    total -= numbers[i];
}

但是我非常怀疑这是你想要的,因为它会将较大的数字严重偏向列表的前面。因此,在我们提供进一步指导之前,您需要确定您想要的随机分布类型。

答案 4 :(得分:0)

你的问题实际上并没有以非常明确的方式提出。

根据我的理解,你想要:

  1. 销售额可以达到0-5销售额
  2. 您想在5种产品中随机分发销售
  3. 然后,这是您可以执行的伪代码:

    // code that deal with only 1 sale
    int noOfSales = get a 0-5 random number;
    loop for noOfSales times {
        p = get a random number less than totalNumberOfProducts
        // to decide which product to sell
    
        product[p] += 1;
    }