代码如下:
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。
小白成长中,诸君共勉:)