使用 Android 时 Java 中的随机数
Posted
技术标签:
【中文标题】使用 Android 时 Java 中的随机数【英文标题】:Random numbers in Java when working with Android 【发布时间】:2011-10-08 03:20:18 【问题描述】:我需要创建一个介于 1 和 20 之间的随机数,并基于该数字(使用“If - Then”语句),我需要设置 ImageView 的图像。
我知道在 Objective-C 中是这样的:
int aNumber = arc4Random() % 20;
if (aNumber == 1)
[theImageView setImage:theImage];
如何在 Java 中做到这一点?我已经看到它这样做了,但我不知道如何设置数字范围(1-20、2-7 等)。
int aNumber = (int) Math.random()
【问题讨论】:
【参考方案1】:Docs are your friends
Random rand = new Random();
int n = rand.nextInt(20); // Gives n such that 0 <= n < 20
文档:
返回一个伪随机、均匀分布的 int 值,介于 0(含)和指定值(不含)之间,取自此随机数生成器的序列。 因此,在这个例子中,我们将有一个介于 0 和 19 之间的数字
【讨论】:
谢谢。我试图阅读文档,但老实说我迷失在那个网站上。我想我是那些会编程的人之一,但不会思考哈哈。 还可以更短:int n = new Random().nextInt(20);
【参考方案2】:
Math.random()
从 [0,1[ 中返回 double
。
Random.nextInt(int)
从 [0, int[.
int
【讨论】:
@trutheality 你抓住了我 :Pint
怎么可能介于 0 和 1 之间? ^^【参考方案3】:
你可以试试:
int aNumber = (int) (20 * Math.random()) + 1;
或
Random rand = new Random();
int n = rand.nextInt(20) + 1;
【讨论】:
这看起来像我想要的,但@trutheality 的答案已经有了投票权。这个答案有什么更好的吗? 不。你可以两者都做。但请注意,如果要从 1 开始,则应添加 1,因为它从 0(包括)到 20(不包括)开始。Math.random
不实例化对象,而 new Random()
会。
Math.random()
的大多数实现都会在第一次调用时创建一个 Random
对象(并在以后重用它)。我很难找到实际的 android 实现,但如果它也是如此,我也不会感到惊讶。如果您要担心微优化,请注意,使用 Math.random
您正在执行 double
算术,然后进行双整数转换。【参考方案4】:
您可以使用 Math.random() 生成介于 0 和 1 之间(不包括在内)的双精度数。 Android Javadoc here.
【讨论】:
以上是关于使用 Android 时 Java 中的随机数的主要内容,如果未能解决你的问题,请参考以下文章
定义一个数组,里面有10个元素,然后我想随机取10个元素中的4个,求方法.(android ,java都行)
Android 应用程序随机崩溃(java.lang.NoClassDefFoundError)
如何从字符串 ArrayList 在字符串数组中的随机位置添加元素。在 Android Java 中