骰子的随机数(帮助)

时间:2017-06-06 09:53:47

标签: java arrays random

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生成的随机数,在给定值中的次数

4 个答案:

答案 0 :(得分:4)

大多数情况下,这很难读取代码。它至少稍微更容易阅读(IMO)

a[dice.nextInt(6) + 1]++;

...但是如果你把事情分开的话,更容易理解它:

int roll = dice.nextInt(6) + 1;
a[roll]++;

请注意,++foofoo++之间没有区别,因为这是整个语句 - 使用后增量形式(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的计数器一样