我正在研究练习数组和数组列表,形成了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,因为现在它只决定一个产品是否被出售一次。
答案 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)
你的问题实际上并没有以非常明确的方式提出。
根据我的理解,你想要:
然后,这是您可以执行的伪代码:
// 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;
}