【问题标题】:random function in Java [closed]Java中的随机函数[关闭]
【发布时间】:2012-04-08 11:36:10
【问题描述】:

我想知道如何在 Java 中获取 4 位随机数。我试图这样做,每次运行程序时,我总是得到相同的数字。 谢谢

【问题讨论】:

  • 你的代码是什么?很可能您每次都使用相同的种子。
  • 不看代码就很难知道自己做错了什么。另外,您是在寻找 1000 到 9999 之间的数字,还是 5(等于 0005)可以?
  • 请出示代码,我们可以追查哪里出了问题
  • 总是发布你的代码,这样你就知道你做错了什么。
  • 无论如何,我已经知道该怎么做了。但是现在我需要做同样的随机操作,但要使用 16 位数字。而且我得到的随机函数不适用于大数字。我得到了这个函数: int pin = new Random().nextInt(10000);但是如果我输入一个像 1000000000000 这样的大数字,它就不起作用,因为它不是 int,而且 nextLong 对我不起作用。

标签: java random


【解决方案1】:

您可以使用Random 类:

int randomNumber = new Random().nextInt(9000) + 1000;

【讨论】:

  • 8999+1000,也可以得到10000哪5位
【解决方案2】:

工作解决方案 - 每次不同的数字

Random r = new Random();
int fourDigit = 1000 + r.nextInt(10000);
System.out.println(fourDigit);

坏了 - 每次都一样

Random r = new Random(123);  // <---- uses same seed every time !
int fourDigit = 1000 + r.nextInt(9000);
System.out.println(fourDigit);

【讨论】:

    【解决方案3】:
    int randomNumber = ( int )( Math.random() * 9999 );
    
    if( randomNumber <= 1000 ) {
        randomNumber = randomNumber + 1000;
    

    Math.random() 是一种通过公式生成随机数的方法。但是它返回一个双精度值,因此如果您想要一个整数、浮点数等,则需要进行强制转换。if 块确保该数字大于 1000 并且是一个 4 位数字。

    【讨论】:

    • 这是一个糟糕的解决方案。在第一行中获得的值的 10% 将落在 1000 和 2000 之间。另外 10% 将落在 1000 以下,并且您的 if 块将增加它们,然后您将获得 1000 和 2000 之间的 20% 的结果。跨度>
    • 好的,我认为这对我有用,非常感谢。
    • @madth3 这不是我的首选解决方案,但随机并不意味着统一 - 所以它仍然符合条件。
    • @madth3 你为这个解决方案提供了什么?因为你说的是​​对的,我不会得到 0 到 999 之间的数字,我怎样才能得到 0 到 999 之间的数字,在 0033 之类的开头添加零?
    • @Johnny:只需使用new Random().nextInt(10000)。前导零是一个输出问题,这与创建数字的问题无关。例如,您可以使用System.out.printf("%04d\n", number)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 2021-11-06
    • 2015-02-10
    • 2017-09-27
    • 2015-04-20
    • 2015-03-16
    • 2021-01-19
    相关资源
    最近更新 更多