【发布时间】:2011-05-22 10:26:22
【问题描述】:
如何在 Java (Android) 中从 0 到 4 绘制一个数字? 如何使用随机函数?
【问题讨论】:
如何在 Java (Android) 中从 0 到 4 绘制一个数字? 如何使用随机函数?
【问题讨论】:
以下将满足您的需求。
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
【讨论】:
请注意 - 每次调用代码:
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);
这个解决方案非常适合我。
【讨论】:
需要注意的一点是,您不应该在每次想要一个新数字时都创建一个新的 Random 对象。这行应该在应用程序启动时执行一次:
Random r = new Random();
那么每次你想要一个新的随机数时都应该调用它:
int x = r.nextInt(5);
【讨论】:
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);
【讨论】: