/**
**本期参与摇号人员共10人(编号1-10),从中抽取3人,可以获得得到购买车牌的资格
**
*/
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class Main {
public static void main(String[] args) {
List<Integer> personList = new ArrayList<>();
initPersonList(personList);
List<Integer> choosePersonList = selectPerson(personList);
System.out.println(choosePersonList);
System.out.println(personList);
}
//核心算法:随机选择下标,然后和最后一个元素交换
private static List<Integer> selectPerson(List<Integer> personList) {
List<Integer> choosePersonList = new ArrayList<>();
Random random = new Random();
int index = -1;
for (int i = 0; i < 3; i++) {
index = random.nextInt(10);
choosePersonList.add(personList.get(index));
Collections.swap(personList, index, personList.size() - 1 - i);
}
return choosePersonList;
}
private static void initPersonList(List<Integer> personList) {
for (int i = 1; i <= 10; i++) {
personList.add(i);
}
System.out.println(personList);
}
}
运行结果:
初始人员编号列表:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
选择的人的编号:
[7, 4, 6]
选择完成后的编号列表:
[1, 2, 3, 9, 5, 8, 10, 6, 4, 7]