随机物品权重算法设计
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;
- }
from:http://blog.csdn.net/zeus_9i/article/details/11900015