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;
}