-3

可能重复:
在 Java 中生成唯一的随机数

我正在为 android 创建一个彩票应用程序,它将生成一组 1 到 49 之间的 6 个数字。我遇到的问题是如何使这些数字独一无二。

Random r = new Random();
int n1=r.nextInt(48) + 1;
ball1.setText(String.valueOf(n1));
int n2=r.nextInt(48) + 1;
ball2.setText(String.valueOf(n2));
int n3=r.nextInt(48) + 1;
ball3.setText(String.valueOf(n3));
int n4=r.nextInt(48) + 1;
ball4.setText(String.valueOf(n4));
int n5=r.nextInt(48) + 1;
ball5.setText(String.valueOf(n5));
int n6=r.nextInt(48) + 1;
ball6.setText(String.valueOf(n6));
4

2 回答 2

6

这是一个经典的任务。取 [1..49] 值的数组,生成 6 个随机排列,然后取排列数组的 6 个第一项。

这称为洗牌(Fisher-Yates shuffle)。

于 2012-05-20T23:38:41.050 回答
0

这是一个非常简单的解决方案。您创建了一个 for 循环来生成新数字,如果它是您创建的第一个数字,则将其添加到临时数组中。然后,每次生成一个新数字时,都要检查现有数字的数组,如果它不是唯一的,则将 1 添加到 for 循环的计数器。

这将继续进行,直到您拥有所有唯一编号。希望这是有道理的。

于 2012-05-20T23:38:08.647 回答