随机点名器2:在本地文件中读取数据并实现随机点名,附带点到男生的概率为70%,点到女生的概率为30%,运行100万次结束后统计点名的占比是否接近7:3,文件数据由好名网提供,爬取代码传送门:https://blog.csdn.net/qq_69957794/article/details/135118537?spm=1001.2014.3001.5502
文件也可自行写入,实现班级随机点名。
/* * 需求:实现随机点名 * 从本地文件下读取数据实现随机点名 * 格式:XXX-男-23 * 运行效果: * 第1次点名:XXX * 第2次点名:XXX * 第3次点名:XXX * 男生与女生名字出现的比例为:7:3 * */
代码实现:
package RamdomRollCaller;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
/*
* 需求:实现随机点名
* 从本地文件下读取数据实现随机点名
* 格式:XXX-男-23
* 运行效果:
* 第1次点名:XXX
* 第2次点名:XXX
* 第3次点名:XXX
* 男生与女生名字出现的比例为:7:3
* */
public class RollCallerDemo2 {
public static void main(String[] args) throws IOException {
//创建对象关联本地文件
BufferedReader br = new BufferedReader(new FileReader("name.txt"));
//创建集合用来存储临时数据
ArrayList<String> tempNameList = new ArrayList<>();
String str = "";
while ((str = br.readLine()) != null) {
tempNameList.add(str);
}
//关流
br.close();
//存储男生名字
ArrayList<String> boyList = new ArrayList<>();
//存储女生名字
ArrayList<String> girlList = new ArrayList<>();
for (String s : tempNameList) {
String[] arr = s.split("-");
if (arr[1].equals("男")) {
boyList.add(s);
} else {
girlList.add(s);
}
}
//创建比重集合0表示女生,1表示男生
ArrayList<Integer> weight = new ArrayList<>();
Collections.addAll(weight, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1);
//随机点名
Random r = new Random();
Scanner sc = new Scanner(System.in);
System.out.println("请输入点名同学个数:");
String tempCount = sc.nextLine();
int count = Integer.parseInt(tempCount);
//统计男生名字出现次数
int boyCount = 0;
//统计女生名字出现次数
int girlCount = 0;
int counter = 0;
while (count-- != 0) {
counter ++;
int number = r.nextInt(10);
int index = weight.get(number);
if (index == 0) {
Collections.shuffle(girlList);
String[] arr = girlList.get(0).split("-");
System.out.println("第"+counter+"次点名:"+arr[0]);
girlCount++;
} else {
Collections.shuffle(boyList);
String[] arr = boyList.get(0).split("-");
System.out.println("第"+counter+"次点名:"+arr[0]);
boyCount++;
}
}
System.out.println("男生与女生名字出现比例为:"+boyCount+":"+girlCount);
}
}
运行结果:
随机点名器实现方式第三种:https://blog.csdn.net/qq_69957794/article/details/135167702?spm=1001.2014.3001.5502