1、列出各个互斥事件(这些事件不可能同时发生)的各自发生的次数
2、将各个事件发生的次数相加得到总次数
3、随机一个数字,挨个判断处于那个事件的区间
static const int itemFreq[5] = {70,24,5,1};
int allFreqs = 0;
int itemCount = sizeof(itemFreq)/sizeof(itemFreq[0]);
for (int i=0; i<itemCount; i++) {
allFreqs += itemFreq[i];
}
int randomNum = cocos2d::random(0, allFreqs);
for (int i=0; i<itemCount; i++)
{
randomNum = randomNum - itemFreq[i];
if (randomNum <= 0) {
return i;
}
}
return 0;