【问题标题】:Random numbers in JavaJava中的随机数
【发布时间】:2011-05-22 10:26:22
【问题描述】:

如何在 Java (Android) 中从 0 到 4 绘制一个数字? 如何使用随机函数?

【问题讨论】:

    标签: java android random


    【解决方案1】:

    以下将满足您的需求。

    Random r = new Random();
    int randomInt = r.nextInt(5);
    

    如果您在循环中执行此操作,请确保在循环外初始化 Random

    Random r = new Random();
    for(int i = 0;i < someThing; i++) {
        System.out.println(r.nextInt(5));
    }
    

    请参阅Random 类的文档:http://download.oracle.com/javase/6/docs/api/java/util/Random.html

    【讨论】:

      【解决方案2】:

      请注意 - 每次调用代码:

      Random r = new Random();
      

      可能会返回相同的数字(我猜你们中很少有人注意到这个 phanamona)。

      我猜它以某种方式与随机数的 Java 问题有关: Java: Can (new Random()).nextInt(5) always return the same number? 和:Java random always returns the same number when I set the seed?

      无论如何我的解决方案是在我的类中添加一个静态变量:

      static Random sRandomGen = new Random();
      

      当我需要随机数时,从相关方法调用 nextInt。这样我就得到了结果之间的平均分配。

      int rnd = sRandomGen.nextInt(numofmatches - 1);
      

      这个解决方案非常适合我。

      【讨论】:

        【解决方案3】:

        需要注意的一点是,您不应该在每次想要一个新数字时都创建一个新的 Random 对象。这行应该在应用程序启动时执行一次:

        Random r = new Random();
        

        那么每次你想要一个新的随机数时都应该调用它:

        int x = r.nextInt(5);
        

        【讨论】:

          【解决方案4】:
          System.out.println(""+(int) (Math.random()*5.0));
          

          如果你只需要生成一个随机数,我相信使用 Math.random() 比制作对象要便宜一些。

          注意:要生成从 0 到 n 的任意整数,(包括 0,不包括 n),只需使用:

          (int) (Math.random()*n);
          

          要生成从 m 到 m+n 的任意整数,(包括 m,不包括 m+n),只需使用:

          m + (int) (Math.random()*n);
          

          【讨论】:

          • 构造一个 Random 的实例并不一定比你的方式更昂贵
          • Ognian 是正确的,澄清一下,第一次调用 Math.random() 实际上会创建一个新的 java.util.Random 对象,所有后续调用 Math.random() 都会使用该对象。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-15
          • 2015-11-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多