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;
    }
  • 相关阅读:
    mongodb导入导出
    python笔记1
    C# 文件下载断点续传
    热水维修记事
    memcached笔记
    模拟登陆
    Nginx学习笔记之加强篇
    Redis学习笔记之基础篇
    Nginx学习笔记之应用篇
    Nginx 学习笔记之安装篇
  • 原文地址:https://www.cnblogs.com/james1207/p/3333685.html
Copyright © 2011-2022 走看看