【问题标题】:How to get a random integer in java?如何在java中获取随机整数?
【发布时间】:2014-02-21 15:28:12
【问题描述】:

我正在尝试获取一个随机整数,但我这样做的方式需要很长时间才能获得该随机数(比如 10 秒!)

Random generator=new Random();
do {
    id=generator.nextInt();
}
while(id<=0||id>=4);

我正在尝试获取(包括)0 到 4 之间的随机数 这段代码到目前为止已经完成了工作,但是 10 秒太长了!

有什么更好的方法来做到这一点?

谢谢!

【问题讨论】:

标签: java


【解决方案1】:

你想要的

generator.nextInt(5);

它返回一个介于 0 和 4 之间的随机整数。原始代码花费这么长时间的原因是因为它一遍又一遍地生成随机整数,直到它得到一个介于 1 和 3 之间的整数。

请注意,当您丢弃所有 0 或更少,以及所有 4 或更多时,您甚至没有得到预期的范围。

更多关于Random类方法的信息可以在http://docs.oracle.com/javase/7/docs/api/java/util/Random.html找到

【讨论】:

  • +1 用于链接到文档,而不会屈服于尖刻或居高临下的诱惑。
【解决方案2】:

那是因为您实际上可能会生成数十亿个随机数并将它们丢弃,直到您得到一个介于 0 和 4 之间的随机数。而是:

id = generator.nextInt(5); // number between 0 and 4, inclusive

以后,请阅读您正在使用的类的文档;这是clearly explained in the Javadoc

【讨论】:

    【解决方案3】:

    使用Math.random() 将其转换为int

    int i=(int)Math.random()*4;
    

    【讨论】:

    • 最好使用内置的nextInt(int) 方法。它更透明、更快捷。
    【解决方案4】:

    只包括上限(假设您需要 1、2 或 3):

    id = 1 + generator.nextInt(3);
    

    来自javadoc

    public int nextInt(int n)

    返回一个伪随机、均匀分布的 int 值,介于 0(含)和指定值(不含)之间,取自此随机数生成器的序列。

    【讨论】:

      【解决方案5】:

      试试这个:

      Random random = new Random();
      random.nextInt(4);
      

      【讨论】:

        猜你喜欢
        • 2019-12-28
        • 1970-01-01
        • 2021-09-21
        • 2011-08-18
        • 2017-09-02
        • 2015-01-27
        • 2012-04-12
        • 2018-01-22
        • 2010-09-16
        相关资源
        最近更新 更多