Java 骰子模拟

标签 java

我正在编写一个掷骰子程序。该代码可以很好地计算出频率的面和数量。如何计算每张脸出现频率的百分比?

 import java.util.Random;

 public class Dice{
    public static void main (String[] args){
      Random random = new Random(); // Generates random numbers
      int[] array = new int[ 7 ]; // Declares the array

      //Roll the die 10000 times
      for ( int roll = 1; roll <=10000; roll++ ) {
        /*++array[1 + random.nextInt(6)];*/
        int dice = 1 + random.nextInt(6);
        ++array[dice];
      }
      System.out.printf("%s%10s\n", "Face", "Frequency");

     // outputs array values
      for (int face = 1; face < array.length; face++) {
         System.out.printf("%4d%10d\n", face, array[face]);
      }
   }
}

最佳答案

频率就是每张脸的数量除以总数量。

for (int face = 1; face < array.length; face++) {
    System.out.printf("%4d%10f\n", face, array[face] / 10000.0);
}

必须使用 double 值执行除法(否则,将执行整数除法且结果始终为 0),这解释了为什么我使用 10000.0 而不是 10000.

我还将字符串格式从 %10d 更改为 %10f 因为您想要打印十进制数,而不是整数。请参阅Formatter所有 token 列表的 Javadoc。

另外,我建议您创建一个局部变量来保存总计数,以免重复两次。

关于Java 骰子模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32671196/

相关文章:

java - 如何在 Mac OS 10.15.6 中永久设置环境变量?

java - CannotLoadBeanClassException : Cannot find class [org. springframework.jdbc.datasource.DriverManagerDataSource] 对于名称为 'dataSource' 的 bean

java - 从Activity传递参数到doInBackground方法,异步任务

java - Android 混合语言文本 - 带有 RTL 和 LTR 文本的 String 上的 BidiFormatter

java - 在 Java 中绘制像素最快的方法是什么

java - 无法通过 SSL 从客户端使用还原代理 (HAProxy) 连接到 gRPC 服务器

java - 在 Java 中将非常大的数据输出到标准输出的最快方法

java - 以类似于 Doodle Jump 和 Cut the Rope 的方式增加分数

java - 缩放后的 Android 位图/ Canvas 偏移

Java根据字符串对自定义对象列表进行排序