【问题标题】:Generating a Random Number between 1 and 10 Java [duplicate]生成 1 到 10 Java 之间的随机数 [重复]
【发布时间】:2013-12-21 19:07:27
【问题描述】:

我想在 Java 中生成一个介于 1 和 10 之间的数字。

这是我尝试过的:

Random rn = new Random();
int answer = rn.nextInt(10) + 1;

有没有办法告诉在调用 nextInt 方法时在括号 () 中放入什么以及添加什么?

【问题讨论】:

  • 您是否阅读了文档,其中详细说明了如何使用此功能?
  • @SLaks 我确实做到了,之后我仍然感到困惑。
  • 你可以把它放在你的代码中:int randomNumber = ThreadLocalRandom.current().nextInt(1, 10 + 1);
  • System.out.println( (int)(Math.random() * (max-min+1) + min)) 我用它来生成一个介于 min 和 max 之间的随机数跨度>

标签: java random


【解决方案1】:

执行此操作的标准方法如下:

提供:

  • min 最小值
  • 最大最大值

并返回一个介于最小值和最大值之间的整数。

Random rand = new Random();

// nextInt as provided by Random is exclusive of the top value so you need to add 1 

int randomNum = rand.nextInt((max - min) + 1) + min;

查看相关的JavaDoc

正如 Aurund 所解释的,在短时间内创建的 Random 对象往往会产生相似的输出,因此将创建的 Random 对象保留为字段而不是方法是个好主意。

【讨论】:

  • Random rand = new Random(); 我什至会说它必须是一个字段。 Random 在短时间内创建的对象往往会产生相似的输出。在短时间内对randInt 进行如此多的调用不会得到均匀分布的输出。
【解决方案2】:

正如the documentation 所说,此方法调用返回“一个伪随机、均匀分布的 int 值,介于 0(包括)和指定值(不包括)之间”。这意味着您将获得从 0 到 9 的数字。因此,通过在该数字上加一,您已经正确地完成了所有操作。

一般来说,如果你需要生成从minmax(包括两者)的数字,你写

random.nextInt(max - min + 1) + min

【讨论】:

【解决方案3】:

这将用于生成数字 1 - 10。确保在代码顶部导入 Random。

import java.util.Random;

如果你想测试一下,试试这样的。

Random rn = new Random();

for(int i =0; i < 100; i++)
{
    int answer = rn.nextInt(10) + 1;
    System.out.println(answer);
}

此外,如果您更改括号中的数字,它将创建一个从 0 到该数字 -1 的随机数(除非您像添加一样添加一个,否则它将是从 1 到您输入的数字)。

【讨论】:

  • 为什么这个 i
  • 会生成1-10之间的100个数字
  • 这个答案大多重复了之前的答案,没有提供新的替代方案。
猜你喜欢
  • 2013-01-02
  • 2014-12-09
  • 2012-02-17
  • 1970-01-01
  • 2011-08-10
  • 1970-01-01
  • 2011-08-19
  • 2013-07-24
相关资源
最近更新 更多