读书人

随机物件权重算法设计

发布时间: 2013-09-24 10:59:52 作者: rapoo

随机物品权重算法设计
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;}

读书人网 >其他相关

热点推荐