zoukankan      html  css  js  c++  java
  • 随机物品权重算法设计

    1、前言
    在游戏开发中很多功能按权重随机给东西,比如:掉落、奖励、抽奖等等.....

    2、功能

    *)支持多个权重进行随机

    *)能屏蔽指定权重,防止再次随机到

    3、实现

    public int weightRandom(BitSet exclude, int... weights) {
            if (weights == null) {
                //安全性验证
            }
            int length = weights.length;
            if (length == 0) {
                return -1;
            }
    
            if (len == 1) {
                int w = weights[0];
                if (w < 0) {
                    //安全性验证
                } else if (w == 0) {
                    return -1;
                } else {
                    return 0;
                }
            }
    
            int total = 0;
            for (int i = 0; i < len; i++) {
                if (exclude != null && exclude.get(i)) {
                    continue;
                }
                int w = weights[i];
                total += w;
            }
            if (total <= 0) {
                return -1;
            }
            int randomNum = random(1, total), hitIndex = -1, partNum = 0;
            for (int i = 0; i < len; i++) {
                if (exclude != null && exclude.get(i)) {
                    continue;
                }
                int w = weights[i];
                partNum += w;
                if (partNum >= randomNum) {
                    hitIndex = i;
                    break;
                }
            }
            return hitIndex;
    }
  • 相关阅读:
    导出api文档
    Webservice测试从头来
    Java8新特性【转】
    spring获取bean的时候严格区分大小写
    java static 方法使用笔记
    maven Spring获取不到配置文件
    4月22日
    4月21日
    9月20日
    9月18日
  • 原文地址:https://www.cnblogs.com/james1207/p/3333685.html
Copyright © 2011-2022 走看看