使用 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[ 中返回 doubleRandom.nextInt(int) 从 [0, int[.

返回一个 int

【讨论】:

@trutheality 你抓住了我 :P int 怎么可能介于 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:在创建时设置随机颜色背景

Android 应用程序随机崩溃(java.lang.NoClassDefFoundError)

如何从字符串 ArrayList 在字符串数组中的随机位置添加元素。在 Android Java 中

Android Studio Java - 如何使用随机数组而不重复?

Android - 线程问题(按钮中的随机字符切换,直到单击按钮)