用java实现抽奖概率算法

抽奖说明
某次抽奖奖金有10元,100元,1000元,每人仅限一次抽奖,用java代码实现

代码如下:

package com.xdl;

import java.util.*;

public class TestDemo {

    public static String weightRandom(Map<String, Integer> map) {
        //获取map里的key值集合
        Set<String> keySet = map.keySet();
        List<String> weights = new ArrayList<>();
        for (Iterator<String> it = keySet.iterator(); it.hasNext(); ) {
            //循环获取map里key值
            String weightStr = it.next();
            //获取key对应的value值,即每个金额对应的次数
            int weight = map.get(weightStr);
            for (int i = 0; i < weight; i++) {
                //等于将90个'10元',9个'100元',1个'1000元'分别添加到weights集合中
                weights.add(weightStr);
            }
        }
        //抽奖时随机获取集合里(100个金额字符串集)的字符串的下标
        int idx = new Random().nextInt(weights.size());
        //返回对应的金额
        return weights.get(idx);

    }

//测试方法如下
    
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        //往map里添加的value值90,9,1代表着各自金额抽中的概率
        map.put("10元", 90);
        map.put("100元", 9);
        map.put("1000元", 1);

       /* //抽一次奖,看抽出金额是多少
        System.out.println(weightRandom(map));*/

        //抽奖100次,看不同奖金分别出现多少次
        for (int i = 0; i < 10; i++) {
            System.out.println(weightRandom(map));
        }
    }

}```


版权声明:本文为weixin_43920664原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。