package test;
import java.util.*;
public class arrayLottery {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入你要抽取几次彩票");
int c = in.nextInt();
System.out.println("请输入彩票号码最高到多少");
int n = in.nextInt();
//彩票号码数组
int[] numbers = new int[n];
//抽取完毕后的彩票号码数组
int[] result = new int[c];
for(int i=0;i<numbers.length;i++){
numbers[i] = i+1;
}
for(int i=0;i<result.length;i++){
int ran = (int)(Math.random()*n);
result[i] = numbers[ran];
/*
这里算这段代码的精髓所在了,因为抽出来的彩票号码是不能重复的
所以每次从numbers数组中抽出来彩票号码后,要将这个号码从numbers数组中移除
这里采取的方法是让numbers[ran]等于numbers数组的最后一个彩票号码,这样就顶替了原先的号码
就比如r为5时,numbers[5]=22,此时numbers[ran] = numbers[n-1],则让numbers[5]里面的值
变成了数组中的最后一个值。
然后再用n--的方法,让numbers数组中的最后一位消除,最后一位的数值也到了numbers[ran]的位置
*/
numbers[ran] = numbers[n-1];
n--;
}
for(int re : result){
System.out.println(re);
}
}
}
本文的主要内容是记录一下这个注释部分,方便以后查阅
结果为