java - 在android中处理随机数

标签 java android random

我想问如何在我的按钮中生成不重复的数字。我想生成一个不重复的数字,因为每当我运行我的项目时,它都会显示所有相同的数字。

下面是我的代码:

int arr1[]={1,2,3,4,5,6,7,8,9,10};
int num=(int)(Math.random()*10);
    one.setText(""+arr1[num]);
    two.setText(""+arr1[num]);
    three.setText(""+arr1[num]);

我想知道如何设置一、二、三按钮如果可能的话不具有相同的值。

最佳答案

您的代码几乎等同于:

int arr1[]={1,2,3,4,5,6,7,8,9,10};
int num = arr1[(int)(Math.random()*10)];
one.setText(""+num);
two.setText(""+num);
three.setText(""+num);

这就是为什么您会看到相同数字的 3 倍。

您应该使用Random#nextInt(int n)而不是你的数组并生成 3 个随机数:

Random r = new Random();
one.setText(Integer.toString(1 + r.nextInt(10)));
two.setText(Integer.toString(1 + r.nextInt(10)));
three.setText(Integer.toString(1 + r.nextInt(10)));

如果您希望数字不重复,您可以使用 Set 等:

Random r = new Random();
Set<Integer> randomNumbers = new HashSet<Integer>();
while(randomNumbers.size() <= 3){
  //If the new integer is contained in the set, it will not be duplicated.
  randomNumbers.add(1 + r.nextInt(10));
}
//Now, randomNumbers contains 3 differents numbers.

关于java - 在android中处理随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18470579/

相关文章:

java.lang.UnsatisfiedlinkError : Native method not found

java - 如何调用 onCreateView 方法或刷新我的 fragment ?

android - 更新到 Marshmallow 后,应用程序在所有 arm64 设备上启动时崩溃。如何仅使用 pc 偏移量进行调试?

java - 序列化 java.util.Random

java - 创建一个数组,其中包含一定范围内的随机值

c# - 给定每个项目的概率,从列表中选择随机项目

java - JasperException 的可能原因有哪些

java - 模式对话框中的 Portlet

java - 为什么Java中有些方法不需要创建实例就可以使用?

android - 尝试单击导航按钮时出现 Espresso AmbiguousViewMatcherException