酉卒之子

导航

JAVA概率实现--一篇最常见、最通用解决方案

日常场景:某活动抽奖,控制各等奖的出现概率

比如控制A(中奖率):20%;B(获得优惠券率):30%;C(谢谢参与率):50%

下面以封装好在main()函数里,上代码(记得导入相应的包):

public class Probability {
    public static void main(String[] args) {/**
     * 先来一个简单通用的解决方案
     * 需求:生成A(一等奖):20%;B(二等奖):30%;C(不中奖):50%
     */
    double num;
    Map<String ,Integer> confirmMap = new HashMap<>();
    int countA = 0;
    int countB = 0;
    int countC = 0;
    for(int i = 0; i < 10000; i++){
        num = Math.random() * 100;
        if(num < 20){
        countA++;
        }else if(num >= 20 && num < 50){
        countB++;
        }else{
        countC++;
        }
    }
    confirmMap.put("A", countA);
    confirmMap.put("B", countB);
    confirmMap.put("C", countC);
    int total = 0;
    for(Map.Entry<String, Integer> cmap : confirmMap.entrySet()){
        total += cmap.getValue();
    }
    System.out.println("总计:"+total);
    NumberFormat nfmt = NumberFormat.getInstance();// 创建一个数值格式化对象  
    nfmt.setMinimumIntegerDigits(2);// 设置精确到小数点后2位 
    for(Map.Entry<String, Integer> omap : confirmMap.entrySet()){
        System.out.print(omap.getKey()+":"+omap.getValue());
        System.out.println("。。。占比为" + nfmt.format((double)omap.getValue()/total * 100) +"%");
    }
    }

}

结果为:

========《无律》==========

posted on 2017-11-01 16:41  酉卒之子  阅读(9518)  评论(0编辑  收藏  举报