生成一组独特的数字java

时间:2012-05-20 23:36:01

标签: java android random

  

可能重复:
  Generate unique random numbers in 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));

2 个答案:

答案 0 :(得分:7)

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

这称为混洗(Fisher–Yates shuffle)。

答案 1 :(得分:0)

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

这将持续到您拥有所有唯一号码为止。希望这是有道理的。