抽取问题, 重点是 同一个学号不能重复被抽取.
创新互联业务包括:成品网站、企业产品展示型网站建设、品牌网站设计、电子商务型网站建设、外贸网站建设(多语言)、商城建设、专业公司、全网营销推广等。效率优先,品质保证,用心服务是我们的核心价值观,我们将继续以良好的信誉为基础,秉承稳固与发展、求实与创新的精神,为客户提供更全面、更优质的互联网服务!
解决办法很多,
比如数组可以使用下标来标记,号码是否被使用,使用了就继续下一次抽取
也可以使用集合来抽取,把集合顺序打乱,然后随便抽几个就可以了
参考代码:数组法
import java.util.Random;
public class Test {
public static void main(String[] args) {
int stuNums=30;
int[] nums=new int[stuNums];//存储学号的数组
boolean[] flags=new boolean[stuNums];//标记,用于标记对应下标的学号是否已经被抽取过了
for (int i = 0; i stuNums; i++) {
nums[i]=i+1;//给学号赋值
}
Random r=new Random();
while(true){
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println("A等:"+nums[index]);
flags[index]=true; //标记已经被使用过了
break;
}
}
for (int i = 0; i 2; i++) {
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println("B等:"+nums[index]);
flags[index]=true;
}else{
i--;//如果已经被抽取过了 ,那么i建议,再次循环
}
}
for (int i = 0; i 3; i++) {
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println("c等:"+nums[index]);
flags[index]=true;
}else{
i--;
}
}
}
}
集合法
import java.util.ArrayList;
import java.util.Collections;
public class Test2 {
public static void main(String[] args) {
int stuNums=20;
ArrayListInteger list=new ArrayListInteger();
for (int i = 0; i stuNums; i++) {
list.add(i+1);
}
System.out.println("有序"+list);
Collections.shuffle(list);//打乱顺序
System.out.println("乱序"+list);
System.out.println("A等"+list.get(0));
System.out.println("B等"+list.get(1));
System.out.println("B等"+list.get(2));
System.out.println("C等"+list.get(3));
System.out.println("C等"+list.get(4));
System.out.println("C等"+list.get(5));
}
}
import java.util.*;
public class RandomStudentId{
private int studentID;
private Random rand = new Random();
//private Set s = new HashSet();
public void RandID(){
studentID = rand.nextInt(1000); //这里写多少,就是从0到多少的随机数字
}
public int getID(){
return studentID;
}
public String toString(){
return "Student ID: " + studentID;
}
public static void main(String[] args){
RandomStudentId rsi = new RandomStudentId();
for(int i=0; i100; ++i){
rsi.RandID();
System.out.println("NO." + rsi.getID());
}
}
}
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class SelectNo {
public static void main(String[] args) {
//将1-35号码放入List集合
ListString list = new ArrayListString();
for (int i = 1; i 36; i++) {
list.add(""+i);
}
//新建一个List集合用来存放抽出来的号码
ListString newList = new ArrayListString();
//随机抽取list集合中的一个元素,抽出后删除
Random rd = new Random();
int count = list.size();//集合中剩余号码
while (count 0) {
int index = rd.nextInt(count);//抽出的号码的位置
//放入新的集合
newList.add(list.get(index));
//删除原有集合的元素
list.remove(index);
count--;//原有集合少了一个
}
//输出号码
for (int i = 0; i newList.size(); i++) {
System.out.print(newList.get(i)+"\t");
//每五个换行
if(i%5 == 4){
System.out.println("");
}
}
}
}