写一个验证掷骰子概率的程序,同时投掷2颗6面骰子n次,计算其和得到各数字的概率。
分析1:随机数(Random)演示掷骰子概率,将两次的和记录到map中:
Map<Integer,Integer> map = new HashMap<>();
for (int i = 0; i < n; i++) {
//第一次掷骰子
int num1 = (int)(Math.random()*6 + 1);
//第二次掷骰子
Random random = new Random();
int num2 = random.nextInt(6) + 1;
int sum = num1+num2;
//两次和为key
if (map.containsKey(sum)){
Integer c = map.get(sum);
map.put(sum,++c);
}else {
map.put(sum,1);
}
}
分析2:取出map的value值除以掷骰子次数,除法使用BigDecimal处理
for (Map.Entry<Integer, Integer> countMap: map.entrySet()) {
System.out.println(countMap.getKey()+"的概率:"+BigDecimal.valueOf(countMap.getValue()).divide(BigDecimal.valueOf(n)));
}