安卓会生成一组唯一的java数字
Possible Duplicate:
Generate unique random numbers in Java
我正在为安卓创建一个彩票应用程序,它将生成一组介于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));
# 1 楼答案
这是一个非常简单的解决方案。你创建一个for循环来生成新的数字,如果它是你创建的第一个数字,你将它添加到一个临时数组中。然后,每次生成一个新数字时,都要检查已有数字的数组,如果它不是唯一的,则向for循环的计数器中添加1
这会一直持续下去,直到你有了所有的唯一号码。希望这是有道理的
# 2 楼答案
这是一项经典任务。取[1..49]值的数组,生成6个随机排列,然后取排列数组的6个首项
这被称为洗牌(Fisher–Yates shuffle)