Java 这行代码的作用是什么`++;arr[1&x2B;r.nextInt(6)]`

Java 这行代码的作用是什么`++;arr[1&x2B;r.nextInt(6)]`,java,Java,我想知道,当我从教程中学习Java时,有一个程序可以滚动骰子1000次并打印其频率 import java.util.Random; 公共类数组{ 公共静态void main(字符串[]args){ 随机r=新随机(); int arr[]=新int[7]; System.out.println(“diceNo.\t频率”); 对于(int roll=1;roll

我想知道,当我从教程中学习Java时,有一个程序可以滚动骰子1000次并打印其频率

import java.util.Random;
公共类数组{
公共静态void main(字符串[]args){
随机r=新随机();
int arr[]=新int[7];
System.out.println(“diceNo.\t频率”);
对于(int roll=1;roll<1000;roll++){
++arr[1+r.nextInt(6)];/*此行*/
}
对于(int i=1;i
r.nextInt(6)
生成一个介于0和5之间的随机整数。向其中添加1将得到介于1和6之间的随机掷骰

arr
数组用于计算每个骰子掷骰的次数,因此
++arr[1+r.nextInt(6)]
增加当前掷骰的计数

当第一个循环完成时,
arr[1]
保存1的数量,
arr[2]
保存2的数量,依此类推。

r.nextInt(6)
生成一个介于0和5之间的随机整数。向其中添加1可以得到一个介于1和6之间的随机骰子滚动

arr
数组用于计算每个骰子掷骰的次数,因此
++arr[1+r.nextInt(6)]
增加当前掷骰的计数

第一个循环完成后,
arr[1]
保存1的数量,
arr[2]
保存2的数量,依此类推。

1+r.nextInt(6)
从1到6(含6)绘制一个随机数

++arr[1+r.nextInt(6)];
增加数组的元素
arr

所以掷骰子的频率分布就建立起来了。数组的第0个元素没有被使用。这就是为什么它被设置为7个元素。也许是浪费?你告诉我。

1+r.nextInt(6)
绘制一个从1到6的随机数

++arr[1+r.nextInt(6)];
增加数组的元素
arr

所以掷骰子的频率分布被建立起来了。数组的第0个元素没有被使用。这就是为什么它被设置为7个元素。也许是浪费?你告诉我

  • r、 nextInt(6)-获取小于6的随机数
  • arr[1+r.nextInt(6)]-从数组arr中获取一个项目,索引为1+步骤1中的随机数
  • ++arr[1+r.nextInt(6)]将步骤2中的项目增加1
  • r、 nextInt(6)-获取小于6的随机数
  • arr[1+r.nextInt(6)]-从数组arr中获取一个项目,索引为1+步骤1中的随机数
  • ++arr[1+r.nextInt(6)]将步骤2中的项目增加1

  • 这一行相当于:

    int number = r.nextInt(6); // Generates a random number between 0 and 6(exclusive)
    int index = number + 1; // Since the faces of dice has value from 1 to 6
    int value = arr[index];
    and increases this number by 1;
    

    这一行相当于:

    int number = r.nextInt(6); // Generates a random number between 0 and 6(exclusive)
    int index = number + 1; // Since the faces of dice has value from 1 to 6
    int value = arr[index];
    and increases this number by 1;
    

    总而言之,该程序模拟滚动一个六边形骰子1000次,并记录每次滚动的次数

    public static void main(String[] args) {
        Random r=new Random();
        int arr[]= new int[7];                    //Craete an array with 7 int elements
        System.out.println("diceNo.\tFrequency");
    
        for(int roll=1;roll<1000;roll++){         //Loop 1000 times
            ++arr[1+r.nextInt(6)];                //Randomly pick arr[1] to 
        }                                         //arr[6] and plus one to it        
    
        for(int i=1;i<arr.length;i++){
            System.out.println(i+"\t"+arr[i]);    //Print occurrence of 1-6
        }    
    }
    

    r.nextInt(6)
    返回
    (0-5)
    的随机值,因此您有:

    ++arr[1+(random 0 to 5)];  //+1 will be evaluated next:
    
    因此,您将生成一个随机值
    1-6
    。接下来,将1添加到数组中:

    ++arr[random 1 to 6];      //+1 to arr[1] or arr[2] or arr[3] or arr[4] or arr[5] or arr[6]
    
    现在可以解释为:

    arr[1] +=1;  //or
    arr[2] +=1;  //or
    arr[3] +=1;  //or
    arr[4] +=1;  //or
    arr[5] +=1;  //or
    arr[6] +=1;
    

    因此,在运行程序后,如果阵列如下所示:

     [0] [1] [2] [3] [4] [5] [6]   Array index
    +---+---+---+---+---+---+---+
    | 0 |175|170|165|170|165|175| <-- arr 
    +---+---+---+---+---+---+---+
    
    It means 1 was rolled 175 times, 
    2 was rolled 170 times, 
    3 was rolled 165 times,
    and so on..
    
    [0][1][2][3][4][5][6]数组索引
    +---+---+---+---+---+---+---+
    
    |0 | 175 | 170 | 165 | 165 | 175 | 175 |总之,该程序模拟滚动一个六边形骰子1000次,并记录每次滚动次数的出现次数

    public static void main(String[] args) {
        Random r=new Random();
        int arr[]= new int[7];                    //Craete an array with 7 int elements
        System.out.println("diceNo.\tFrequency");
    
        for(int roll=1;roll<1000;roll++){         //Loop 1000 times
            ++arr[1+r.nextInt(6)];                //Randomly pick arr[1] to 
        }                                         //arr[6] and plus one to it        
    
        for(int i=1;i<arr.length;i++){
            System.out.println(i+"\t"+arr[i]);    //Print occurrence of 1-6
        }    
    }
    

    r.nextInt(6)
    返回
    (0-5)
    的随机值,因此您有:

    ++arr[1+(random 0 to 5)];  //+1 will be evaluated next:
    
    因此,您将生成一个随机值
    1-6
    。接下来,将1添加到数组中:

    ++arr[random 1 to 6];      //+1 to arr[1] or arr[2] or arr[3] or arr[4] or arr[5] or arr[6]
    
    现在可以解释为:

    arr[1] +=1;  //or
    arr[2] +=1;  //or
    arr[3] +=1;  //or
    arr[4] +=1;  //or
    arr[5] +=1;  //or
    arr[6] +=1;
    

    因此,在运行程序后,如果阵列如下所示:

     [0] [1] [2] [3] [4] [5] [6]   Array index
    +---+---+---+---+---+---+---+
    | 0 |175|170|165|170|165|175| <-- arr 
    +---+---+---+---+---+---+---+
    
    It means 1 was rolled 175 times, 
    2 was rolled 170 times, 
    3 was rolled 165 times,
    and so on..
    
    [0][1][2][3][4][5][6]数组索引
    +---+---+---+---+---+---+---+
    
    |0 | 175 | 170 | 165 | 165 | 175 |尝试添加一些断点,并使用“调试代码”代替“运行代码”。在IDE的调试视图中,您将一步一步地看到所有内容。其他方法尝试一行一行地告诉自己正在发生的事情,大声说出来;)如果有帮助,编写后一种方法,如果没有帮助,我们将尝试其他方法;)@umant Narayan您可以接受其中的一种方法您认为下面的解决方案通过单击它旁边的空心勾号对您帮助最大。尝试添加一些断点,使用“调试代码”代替“运行代码”。在IDE的“调试”视图中,您将一步一步地看到所有内容。其他方法尝试逐行大声告诉自己正在发生的事情;)如果有帮助,请编写后面的内容,如果没有t我们将尝试其他方法;)@umant Narayan您可以通过单击旁边空心的勾号来接受下面您认为最有帮助的解决方案之一。