【问题标题】:Get random numbers in a specific range in java [duplicate]在java中获取特定范围内的随机数[重复]
【发布时间】:2012-07-29 09:44:30
【问题描述】:

可能重复:
Java: generating random number in a range

我想使用

生成随机数
java.util.Random(arg);

唯一的问题是,这个方法只能接受一个参数,所以这个数字总是在 0 和我的参数之间。有没有办法生成(比如说)200 到 500 之间的随机数?

【问题讨论】:

  • 不清楚的程度如何?你有一个上限。你希望它被一个数字抵消。加上那个号码。使用+。比如,x + 200
  • 您是否注意到,当您创建问题时,SO 会向您显示可能的类似问题列表,例如 this one,以便您可以更快地找到答案?

标签: java random


【解决方案1】:
Random rand = new Random(seed);
int random_integer = rand.nextInt(upperbound-lowerbound) + lowerbound;

【讨论】:

  • 非常感谢!它工作正常,您的回答对我来说是迄今为止最有建设性和最有用的:)
  • @imulsion Modulo 当然是错误的;没有返回随机数的 Random 构造函数。除了给出加法示例之外,所有其他三个答案都正确使用了该类。
  • 除了错,没有错。
  • 我只是用 nextInt() 代替;这仍然是最有建设性的答案
  • int next = random.nextInt(upper - lower + 1) + lower;
【解决方案2】:

首先,你要创建一个 Random 对象,例如:

Random r = new Random();

然后,如果你想要一个 int 值,你应该使用nextInt int myValue = r.nextInt(max);

现在,如果您想在一个区间内这样做,只需执行以下操作:

 int myValue = r.nextInt(max-offset)+offset;

在你的情况下:

 int myValue = r.nextInt(300)+200;

您应该查看文档:

http://docs.oracle.com/javase/6/docs/api/java/util/Random.html

【讨论】:

    【解决方案3】:

    传递给构造函数的参数是种子,而不是边界。

    要获取 200 到 500 之间的数字,请尝试以下操作:

    Random random = new Random(); // or new Random(someSeed);
    int value = 200 + random.nextInt(300);
    

    【讨论】:

      【解决方案4】:

      我认为您误解了 Random 的工作原理。它不返回整数,而是返回一个 Random 对象,其参数是 PRNG 的 种子值

      Random rnd = new Random(seed);
      int myRandomValue = 200 + rnd.nextInt(300);
      

      【讨论】:

        猜你喜欢
        • 2016-09-19
        • 1970-01-01
        • 1970-01-01
        • 2018-06-22
        • 2014-10-23
        • 1970-01-01
        • 2015-04-08
        • 1970-01-01
        • 2018-05-15
        相关资源
        最近更新 更多