今天在上看到一个抽奖的小算法,与大家分享
重返IT路 2008-11-17 09:16:09 题目:
有1~100个号码,抽取7个号码获奖。不能抽取重复的号码
解题思路:
常规思路:
1.用Math.random()方法抽取一个数来
2.判断这个数是否已被抽取过,若是则重新抽取。
书上思路:
用一数组存放100个数
int n = 100;
int[] number = new int[n]
for(int i=0;i<n;i++)
number[i]=i+1;
再用一数组存放结果
int[] result = new int[7];
随机抽取7个数将结果号码放到result数组中,并判断重复
for(int i=0;i<7;i++)
{
index=Math.random()×n;
result[i]=number[index];
number[index]=number[--n];//把已经抽到的号码和最后一个数交换,并且在算随机数时不包含最后数的索引值就实现了判断重复
}
-----------------------------
本人刚学习JAVA一星期,有什么地方请各位大侠多指点~