62,620
社区成员
发帖
与我相关
我的任务
分享
import java.util.*;
public class LotteryDrawing{
public static void main(String[] args){
// 按照你的例子 原数组长度:10, 彩票数组长度:8
// [注意1]:此时原数组长度值等于原数组的真正长度
int 原数组长度值 = 10,k = 8;
int[] src = new int[原数组长度值];
for(int i=0; i<原数组长度值; i++){
src[i] = i+1; //[注意4]:每个下标对应的数都是唯一的
}
int[] result = new int[k];
for(int i=0; i<k; i++){
int index = (int)(Math.random() * 原数组长度值); // [注意3]:看完[注意2]再回看这条语句
result[i] = src[index];
src[index] = src[原数组长度值-1];
原数组长度值--;// [注意2]:此时原数组长度值小于原数组的真正长度
// 也就是下一次循环时[注意3]的"原数组长度值"已经小于真实长度了
// 所以[注意3]生成的下标一直在变小,后面的下标取不到因此避免重复
}
Arrays.sort(result); //易于查重
System.out.println(Arrays.toString(result));
}
}