彩票 31 选 7
方法一、用集合实现(用了面向对象的思维)。
?
public class Demo4 {
? public static void main(String[] args) {
?? List list? =new ArrayList();
?? for(int i=1;i<=31;i++){
????????????????? list.add(i);
???? }
??
?? for(int i=0;i<7;i++){
????? //得到谁,移除谁。list的大小是变化,所以不会重复。
???int k= (int)(Math.random()*(31-i));
??????????? System.out.println(list.get(k));
??????????? list.remove(k);
??????? }
?? }
?? }
?
?
?
?
?
?
方法2、 用数组实现
?
public class Test5 {
? public static void main(String[] args){
//?? 指定数组的大小
?? int n=30;
?? int[] a=new int[n];
??
//?? 给数组赋值
?? for(int i=0;i<a.length;i++){
??? a[i]=i+1;
?? }
//?? 声明一个放新数的数组。
?? int[] k=new int[7];
?? for(int i=0;i<k.length;i++){
//???随机生成一个数,用来做旧数组的索引。
???int s=(int)((Math.random())*n);
//???给新数组赋值
??? k[i]=a[s];
//??? 给旧数组赋值,让取出的值放在数组的最后一位,方便移除。
??? a[s]=a[n-1];
//??? 让旧数组大小减一
??? n--;
??? System.out.println(k[i]);
?? }
? }
}
?
?
?
?
下面是:别人总结的:
1、也谈生成不重复数的算法
2、想从1--100之间随机不重复的20个数,赋给a[ ]数组
3、生成不重复的随机数的三种方法
?
?
?
??????? 我只想说一句话,方法还有很多!发挥自己的思想吧!