import java.util.*;
import java.lang.*;
public class Main {
public static void main(String[] args) {
Random dice = new Random();
int a[]=new int [7];
for(int i = 1 ; i <=100;i++){
++a[1+dice.nextInt(6)];
}
System.out.println("Sno\t Values");
int no;
for(int i=1;i<a.length;i++){
System.out.println(i+"\t"+a[i]);
}
}
}
Sno Values
1 19
2 13
3 16
4 16
5 19
6 18
任何人都可以解释这一行“++ a [1 + dice.nextInt(6)]”
我知道这个程序提供从1-6生成的随机数,在给定值中的次数
答案 0 :(得分:4)
大多数情况下,这很难读取代码。它至少稍微更容易阅读(IMO)
a[dice.nextInt(6) + 1]++;
...但是如果你把事情分开的话,更容易理解它:
int roll = dice.nextInt(6) + 1;
a[roll]++;
请注意,++foo
和foo++
之间没有区别,因为这是整个语句 - 使用后增量形式(foo++
)通常更容易阅读,IMO:work你要增加什么,然后增加它。
Random.nextInt(6)
将返回介于0和5之间的值 - 因此,为该结果添加1将获得介于1和6之间的值。
答案 1 :(得分:4)
是的,首先你有
int a[]=new int [7];
这是一个可以容纳7个元素的数组(有效索引为0-6),所有这些元素的初始值都为0
。然后
++a[1+dice.nextInt(6)];
正在说
int randomIndex = 1 + dice.nextInt(6); // <-- a random value 1 to 6 inclusive
a[randomIndex] = a[randomIndex] + 1;
计算通过六个人的数量是多少。
答案 2 :(得分:2)
<强> ++ A [1 + dice.nextInt(6)] 强>
dice.nextInt(6)
=返回0到5之间的整数
然后你将1添加到该值,然后在数组 a 中获得该索引处的元素,并使用 增加该元素++ 操作
答案 3 :(得分:2)
1+dice.nextInt(6)
返回一个伪随机,均匀分布的值,介于0(含)和指定值(不包括)之间,从该随机数生成器的序列中提取。
因此a[x]
的值将介于1到6之间(包括两者)并增加{{1}}的值,就像x的计数器一样