java利用map来实现可视化统计随机数分布

来源:互联网 发布:java list排序函数 编辑:程序博客网 时间:2024/06/08 16:30

代码如下:

import java.lang.Math;import java.util.*;public class RandomTest{    public static void main(String[] args)     {        Random rand = new Random(100);        Map <Integer, Integer> m =         new HashMap<Integer, Integer>();        for (int i=0;i<10000 ;i++ )         {            //产生1至20之间的随机数            int rNum = rand.nextInt(20);            //map的get方法在key值不存在,即rNum第一次在map中被发现时,会返回null            Integer frequency = m.get(rNum);            //frequency == null 会返回一个boolean值,            //在这个三目运算符中,当返回值为true时,在map中插入rNum并记录frequency=1            //当返回值为false时,插入rNum,并在其原有frequency的基础上加1            m.put(rNum, frequency==null? 1: frequency+1);           }        //输出map         System.out.println(m);        for (int count =0; count<m.size();count ++ ) {            int abs = Math.abs(m.get(count)-500);            System.out.printf("%02d --> %d --> %02d: ",count,m.get(count),abs);            while (abs>0)            {            System.out.print("*");            abs = abs -1;            }            System.out.println();                   }    }}

输出结果:

{0=507, 1=491, 2=514, 3=476, 4=465, 5=473, 6=518, 7=500, 8=508, 9=489, 10=478, 11=500, 12=526, 13=501, 14=512, 15=527, 16=516, 17=498, 18=502, 19=499}00 --> 507 --> 07: *******01 --> 491 --> 09: *********02 --> 514 --> 14: **************03 --> 476 --> 24: ************************04 --> 465 --> 35: ***********************************05 --> 473 --> 27: ***************************06 --> 518 --> 18: ******************07 --> 500 --> 00: 08 --> 508 --> 08: ********09 --> 489 --> 11: ***********10 --> 478 --> 22: **********************11 --> 500 --> 00: 12 --> 526 --> 26: **************************13 --> 501 --> 01: *14 --> 512 --> 12: ************15 --> 527 --> 27: ***************************16 --> 516 --> 16: ****************17 --> 498 --> 02: **18 --> 502 --> 02: **19 --> 499 --> 01: *

关于printf()的使用方法,参见java中用printf方法来生成bar chart。

小白成长中,诸君共勉:)

原创粉丝点击