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;
本文介绍了一种基于频率的随机事件选择算法实现。该算法通过计算每个事件的发生频率,并使用随机数来确定应触发哪个事件。文章提供了具体的实现代码,包括初始化事件频率、计算总频率、生成随机数以及确定事件索引的过程。
850

被折叠的 条评论
为什么被折叠?



