我是靠谱客的博主 缓慢草丛,最近开发中收集的这篇文章主要介绍java 加权随机数实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


import java.util.HashMap;
import java.util.Map;
import java.util.Random;

public class Test1 {

    // String 可以为任意类型 也可以自定义类型
    static Map<String, Integer> keyChanceMap = new HashMap<String, Integer>();
    static {
//        keyChanceMap.put("出现比例为10的", 10);
        keyChanceMap.put("出现比例为40的", 4);
        keyChanceMap.put("出现比例为20的", 2);
        keyChanceMap.put("出现比例为10的", 1);
        keyChanceMap.put("出现比例为30的", 3);
    }

    public static void main(String[] args) {
        Map<String, Integer> count = new HashMap<String, Integer>();
        for (int i = 0; i < 100000; i++) {

            String item = chanceSelect(keyChanceMap);

            if (count.containsKey(item)) {
                count.put(item, count.get(item) + 1);
            } else {
                count.put(item, 1);
            }
        }

        for (String id : count.keySet()) {
            System.out.println(id + "t出现了 " + count.get(id) + " 次");
        }
    }

    public static String chanceSelect(Map<String, Integer> keyChanceMap) {
        if (keyChanceMap == null || keyChanceMap.size() == 0)
            return null;

        Integer sum = 0;
        for (Integer value : keyChanceMap.values()) {
            sum += value;
        }
        // 从1开始
        Integer rand = new Random().nextInt(sum) + 1;

        for (Map.Entry<String, Integer> entry : keyChanceMap.entrySet()) {
            rand =rand- entry.getValue();
            // 选中
            if (rand <= 0) {
                String item = entry.getKey();
                return item;
            }
        }

        return null;
    }
}

最后

以上就是缓慢草丛为你收集整理的java 加权随机数实现的全部内容,希望文章能够帮你解决java 加权随机数实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部