我正在为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));
答案 0 :(得分:7)
这是一项经典任务。取[1..49]数组的数组,生成6个随机排列,然后取6个置换数组的第一项。
这称为混洗(Fisher–Yates shuffle)。
答案 1 :(得分:0)
这是一个非常简单的解决方案。你创建一个for循环来创建新数字,如果它是你创建的第一个数字,你将它添加到一个临时数组。然后,每次生成一个新数字时,都要检查已存在数字的数组,然后如果它不是唯一的,则将1添加到for循环的计数器中。
这将持续到您拥有所有唯一号码为止。希望这是有道理的。