【高中数学/统计学】用Java程序计算108将分数的均值、方差与标准差
【主程序】
主程序用来做初始化、计算和输出
package test260215; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * 用于计算108将的均值、方差和标准差 * */ public class Test { // 入口 public static void main(String[] args) { // 108将名单 final String names="宋江,卢俊义,吴用,公孙胜,关胜,林冲,秦明,呼延灼,花荣,柴进,李应,朱仝,鲁智深,武松,董平,张清,杨志,徐宁,索超,戴宗,刘唐,李逵,史进,穆弘,雷横,李俊,阮小二,张横,阮小五,张顺,阮小七,杨雄,石秀,解珍,解宝,燕青,朱武,黄信,孙立,宣赞,郝思文,韩滔,彭玘,单廷圭,魏定国,萧让,裴宣,欧鹏,邓飞,燕顺,杨林,凌振,蒋敬,吕方,郭盛,安道全,皇甫端,王英,扈三娘,鲍旭,樊瑞,孔明,孔亮,项充,李衮,金大坚,马麟,童威,童猛,孟康,侯健,陈达,杨春,郑天寿,陶宗旺,宋清,乐和,龚旺,丁得孙,穆春,曹正,宋万,杜迁,薛永,施恩,李忠,周通,汤隆,杜兴,邹渊,邹润,朱贵,朱富,蔡福,蔡庆,李立,李云,焦挺,石勇,孙新,顾大嫂,张青,孙二娘,王定六,郁保四,白胜,时迁,段景住,"; // 初始化108将链表 List<Person> persons=new ArrayList<Person>(); String[] nameArr=names.split(","); for(int i=0;i<nameArr.length;i++) { String name=nameArr[i]; Person p=new Person(); p.setSn(i+1); p.setName(name); p.setScore(getRnd(0,100));// 设定随机分数 persons.add(p); } System.out.println("108将及其分数"); float total=0;// 总分 for(Person p:persons) { total+=p.getScore(); String text=String.format("%3d.%s:%d\t", p.getSn(),p.getName(),p.getScore()); System.out.print(text); if(p.getSn()%4==0) { System.out.println(); } } System.out.println("\n分数区段个数"); int[] scoreArr=new int[11]; for(Person p:persons) { scoreArr[(int)(p.getScore()/10)]++; } int idx=0; for(int i:scoreArr) { String grid=repeatStr("⬛",i); System.out.println(String.format("%3d-%3d %s 计%d个", idx*10,(idx+1)*10-1,grid,i)); idx++; } float average=total/persons.size();// 均值 System.out.println("\n均值:"+String.format("%6.2f",average)); float variance=0;// 方差 for(Person p:persons) { variance+=Math.pow((float)p.getScore()-average,2); } variance/=persons.size(); float standardDeviation=(float)Math.sqrt(variance);// 标准差 System.out.println("方差:"+String.format("%6.2f",variance)); System.out.println("标准差:"+String.format("%6.2f", standardDeviation)); System.out.println("\n108将及其偏差值"); for(Person p:persons) { float bias=(p.getScore()-average)/standardDeviation*10+50; p.setBias(bias); String text=String.format("%3d.%s:%d\t", p.getSn(),p.getName(),(int)p.getBias()); System.out.print(text); if(p.getSn()%4==0) { System.out.println(); } } } /** * 将一个字符串重复n次,返回重复后的字符串(代码简洁效率稍低) * @param seed 字符串 * @param n 次数 * @return */ public static String repeatStr(String seed,int n) { return String.join("", Collections.nCopies(n, seed)); } /** * 取得包括顶底在内的随机整数 * @param min * @param max * @return */ private static int getRnd(int min,int max) { return (int)(min+Math.random()*(max-min+1)); } }
实体类:
实体类作为个人信息的载体
package test260215; /** * 单个人 * Pojo类,只存放数据 * */ public class Person { private String name;// 名称 private int sn;// 序号 private int score;// 分数 private float bias;// 偏差值 public float getBias() { return bias; } public void setBias(float bias) { this.bias = bias; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getSn() { return sn; } public void setSn(int sn) { this.sn = sn; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } }
【某次执行结果】
108将及其分数 1.宋江:67 2.卢俊义:90 3.吴用:97 4.公孙胜:69 5.关胜:75 6.林冲:14 7.秦明:31 8.呼延灼:59 9.花荣:11 10.柴进:54 11.李应:6 12.朱仝:7 13.鲁智深:99 14.武松:55 15.董平:84 16.张清:62 17.杨志:76 18.徐宁:77 19.索超:7 20.戴宗:85 21.刘唐:44 22.李逵:0 23.史进:52 24.穆弘:86 25.雷横:4 26.李俊:78 27.阮小二:80 28.张横:28 29.阮小五:33 30.张顺:48 31.阮小七:57 32.杨雄:54 33.石秀:79 34.解珍:25 35.解宝:33 36.燕青:17 37.朱武:27 38.黄信:100 39.孙立:58 40.宣赞:34 41.郝思文:11 42.韩滔:87 43.彭玘:36 44.单廷圭:73 45.魏定国:42 46.萧让:97 47.裴宣:20 48.欧鹏:50 49.邓飞:17 50.燕顺:78 51.杨林:36 52.凌振:35 53.蒋敬:58 54.吕方:71 55.郭盛:94 56.安道全:87 57.皇甫端:5 58.王英:73 59.扈三娘:88 60.鲍旭:0 61.樊瑞:100 62.孔明:80 63.孔亮:2 64.项充:86 65.李衮:92 66.金大坚:99 67.马麟:35 68.童威:26 69.童猛:75 70.孟康:49 71.侯健:34 72.陈达:48 73.杨春:25 74.郑天寿:16 75.陶宗旺:7 76.宋清:42 77.乐和:6 78.龚旺:65 79.丁得孙:70 80.穆春:84 81.曹正:84 82.宋万:53 83.杜迁:27 84.薛永:6 85.施恩:98 86.李忠:60 87.周通:90 88.汤隆:84 89.杜兴:81 90.邹渊:52 91.邹润:38 92.朱贵:16 93.朱富:2 94.蔡福:9 95.蔡庆:68 96.李立:5 97.李云:70 98.焦挺:55 99.石勇:0 100.孙新:50 101.顾大嫂:1 102.张青:21 103.孙二娘:6 104.王定六:90 105.郁保四:75 106.白胜:19 107.时迁:16 108.段景住:94 分数区段个数 0- 9 ⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛ 计17个 10- 19 ⬛⬛⬛⬛⬛⬛⬛⬛⬛ 计9个 20- 29 ⬛⬛⬛⬛⬛⬛⬛⬛ 计8个 30- 39 ⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛ 计10个 40- 49 ⬛⬛⬛⬛⬛⬛ 计6个 50- 59 ⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛ 计13个 60- 69 ⬛⬛⬛⬛⬛⬛ 计6个 70- 79 ⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛ 计13个 80- 89 ⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛ 计13个 90- 99 ⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛ 计11个 100-109 ⬛⬛ 计2个 均值: 50.29 方差:985.50 标准差: 31.39 108将及其偏差值 1.宋江:55 2.卢俊义:62 3.吴用:64 4.公孙胜:55 5.关胜:57 6.林冲:38 7.秦明:43 8.呼延灼:52 9.花荣:37 10.柴进:51 11.李应:35 12.朱仝:36 13.鲁智深:65 14.武松:51 15.董平:60 16.张清:53 17.杨志:58 18.徐宁:58 19.索超:36 20.戴宗:61 21.刘唐:47 22.李逵:33 23.史进:50 24.穆弘:61 25.雷横:35 26.李俊:58 27.阮小二:59 28.张横:42 29.阮小五:44 30.张顺:49 31.阮小七:52 32.杨雄:51 33.石秀:59 34.解珍:41 35.解宝:44 36.燕青:39 37.朱武:42 38.黄信:65 39.孙立:52 40.宣赞:44 41.郝思文:37 42.韩滔:61 43.彭玘:45 44.单廷圭:57 45.魏定国:47 46.萧让:64 47.裴宣:40 48.欧鹏:49 49.邓飞:39 50.燕顺:58 51.杨林:45 52.凌振:45 53.蒋敬:52 54.吕方:56 55.郭盛:63 56.安道全:61 57.皇甫端:35 58.王英:57 59.扈三娘:62 60.鲍旭:33 61.樊瑞:65 62.孔明:59 63.孔亮:34 64.项充:61 65.李衮:63 66.金大坚:65 67.马麟:45 68.童威:42 69.童猛:57 70.孟康:49 71.侯健:44 72.陈达:49 73.杨春:41 74.郑天寿:39 75.陶宗旺:36 76.宋清:47 77.乐和:35 78.龚旺:54 79.丁得孙:56 80.穆春:60 81.曹正:60 82.宋万:50 83.杜迁:42 84.薛永:35 85.施恩:65 86.李忠:53 87.周通:62 88.汤隆:60 89.杜兴:59 90.邹渊:50 91.邹润:46 92.朱贵:39 93.朱富:34 94.蔡福:36 95.蔡庆:55 96.李立:35 97.李云:56 98.焦挺:51 99.石勇:33 100.孙新:49 101.顾大嫂:34 102.张青:40 103.孙二娘:35 104.王定六:62 105.郁保四:57 106.白胜:40 107.时迁:39 108.段景住:63
END
浙公网安备 33010602011771号