JCSprout
JCSprout copied to clipboard
红包算法测试问题
根据您的红包实现算法,自己测试了一下数据,产生200W个红包 每个红包的总金额都是200 分给10个人,按理说在每个人获得的金额在概率分布中应该是20元左右,但是测试出来的结果 有同一个共性,就是 倒数 后面几个人获取的平均值 总是距离平均值很远。从概率的角度想 不应该出现这个问题吧

@1yus2yus3
请把你测试的这段代码贴下,我模拟试试。
public static void main(String[] args) {
Map<Integer,List<Integer>> map = new HashMap();
for (int i = 0; i < 2000000; i++) {
//产生红包
RedPacket redPacket = new RedPacket();
List<Integer> redPackets = redPacket.splitRedPacket(20000, 10);
//System.out.println(redPackets);
for (int j = 0; j < redPackets.size(); j++) {
if(map.get(j) == null) {
map.put(j,new ArrayList<Integer>());
}
map.get(j).add(redPackets.get(j));
}
}
//对map进行数据统计
Iterator<Map.Entry<Integer, List<Integer>>> entryIterator = map.entrySet().iterator();
while (entryIterator.hasNext()) {
Map.Entry<Integer, List<Integer>> next = entryIterator.next();
List<Integer> values = next.getValue();
IntSummaryStatistics stats = values.stream().mapToInt((x)->x).summaryStatistics();
System.out.println("第" + (next.getKey() + 1) + "个人获取到 平均值=" + stats.getAverage());
}
}