【问题标题】:new Random().nextInt(999999) sometimes generates 5 digit number [duplicate]new Random().nextInt(999999) 有时会生成 5 位数字 [重复]
【发布时间】:2018-04-25 18:28:57
【问题描述】:

我正在使用新的Random().nextInt(999999) 来生成一个 6 位随机数。但有时它会生成 5 位数字。而且我必须明确检查生成的数字是否不是 6 位数。

为什么这个方法会这样做?还有没有其他方法可以确定它只生成 6 位随机数。

【问题讨论】:

  • 因为0到999999之间有五位数字。
  • 我对这个问题投了反对票,因为没有任何研究证据。请edit 您的问题包括您所做的研究以及准确您遇到困难的地方。如果你能做到这一点,我可能会撤回我的反对票。
  • 我无话可说赞美你的评论@JoeC ^_^
  • 我不想让你沮丧,但它也可以生成 4 位、3 位、2 位和 1 位数字。

标签: java random


【解决方案1】:

Random().nextInt(999999) 生成介于 0 和 999998 之间的数字,因此您有大约 10% 的机会获得小于 100000(5 位或更少位)的数字。

试试

100000 + Random().nextInt(900000)

您将获得 100000 - 999999 范围内的数字

【讨论】:

  • Random.nextInt(int) 返回一个值exclusive到限制。
  • 这个答案是正确的,除了 Random().nextInt(999999) 生成 0 到 999998 之间的数字
  • @ElliottFrisch,Fatih Ozcan 谢谢,我修正了我的答案
  • 请问有人可以删除问题吗?
  • @MehrajMalik 为什么?它有一个赞成的答案,也将帮助其他人。
【解决方案2】:

Random().nextInt(999999) 有时会生成 5 位数字,因为它会生成 0 到 999999 之间的随机值。

使用以下 sn-p 生成范围内的随机数:

Random random = new Random();
minimum + random.nextInt(maximum - minimum + 1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多