java - 基本的随机掷骰子 Java

标签 java random

我正在尝试编写一个方法 rollDice(int number, int nSides),该方法返回掷有 nSides 面的数字骰子的总结果。

因此,例如 rollDice(3, 6) 应该返回滚动 3 个六面骰子的结果(添加到 3 到 18 之间的数字)。

当我为 int number 键入 1 时,下面的方法返回负数 我需要做什么来解决这个问题?

public static  int rollDice(int number, int nSides) {
    int num = 0;
      if(nSides >=3)
    {
      for(int i = 0; i < number; i++){
       Random  r = new Random(); 
       int roll = r.nextInt();
       num = num + (roll % nSides)+1;

      }
    }
      else{
          System.out.println("Error num needs to be from 3");

    }
    return num; 
} 

最佳答案

Random.nextInt() 具有不可预测的行为 - 它可以生成整数的所有可能值,包括负数。请改用 Random.nextInt(numSides) - 它将从 [0,numSides) 返回一个整数,即包括 0 并排除 numSides。要获得所需的功能 [1,numSides],请使用

r.nextInt(numSides)+1;

参见 here获取更多信息。

关于java - 基本的随机掷骰子 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12860398/

相关文章:

swift - Sprite 的随机移动

c++ - 在具有相同种子的不同操作系统上实现相同的随机数序列

java - JTable 未显示在 JPanel 中

java - 无法使用准备好的语句插入数据库

java - java中CardLayout的父级错误

java - JMockit 错误 - 附加 API 的 native 库在此 JRE 中不可用

c - C语言中如何从数组中随机选取元素?

python - Python生成n维随机数

c# - C# 中分形 Perlin 噪声函数的均匀分布

java - 二分查找算法的问题