代码之家  ›  专栏  ›  技术社区  ›  Rafe Kettler

为Random.nextInt()指定最大值和最小值[[副本]

  •  13
  • Rafe Kettler  · 技术社区  · 14 年前


    Java: generating random number in a range

    我想在逻辑范围内生成一个随机的int。比如说,我在写一个程序,来“滚动”一个有指定边数的骰子。

    public int rollDice() {
         Random generator = new Random();
         return generator.nextInt(sides);
    }

    现在的问题是,这将返回边和零之间的值, 包容的 ,这是没有意义的,因为大多数骰子从1到6,9,等等。那么我如何指定nextInt应该在1和边数之间工作呢?

    1 回复  |  直到 7 年前
        1
  •  46
  •   Eyal Schneider    14 年前

    生成一个随机的int值(均匀分布) (含)使用:

    from + rndGenerator.nextInt(to - from + 1)
    

    在您的情况下(1..sides):

    1 + rndGenerator.nextInt(sides)