转盘抽奖概率算法的Java代码实现

最近的公司项目中遇到一个转盘抽奖的活动:

转盘抽奖概率算法的Java代码实现_第1张图片

具体每次抽中每个红包的概率要求如下:

转盘抽奖概率算法的Java代码实现_第2张图片

如何实现每次抽中某个红包的概率算法呢,假如是第三次抽奖:8元的概率为25,10元的概率为70,15元的概率为5,

实现代码如下:

 public static String weightRandom(Map map) {
        Set keySet = map.keySet();
        List weights = new ArrayList();
        for (Iterator it = keySet.iterator(); it.hasNext(); ) {
            String weightStr = it.next();
            int weight = map.get(weightStr);
            for (int i = 0; i <= weight; i++) {
                weights.add(weightStr);
            }
        }
        int idx = new Random().nextInt(weights.size());
        return weights.get(idx);

    }

//测试方法如下


 public static void main(String[] args) {
        Map map = new HashMap<>();
        map.put("8元", 25);
        map.put("10元", 70);
        map.put("15元", 5);

        for (int i = 0; i < 10; i++) {
            System.out.println(weightRandom(map));
        }
    }

 

你可能感兴趣的:(java)