抽奖功能实现(纯算法)
2017-11-23 本文已影响41人
刺風
权重的概念
简单的将权重就是某个奖品的中奖率,总权重就是所有的中奖率相加得到的总数(当然如果是抽奖的话所有奖品加起来最高也就是100,因为100就是百分之百中奖咯)。
核心算法
总权重为10(1+2+3+4),那么怎么做到按权重随机呢?根据10随机出一个整数,假如为随机出来的是2.然后依次和权重相减,比如2(随机数)-1(A的权重) = 1
,然后1(上一步计算的结果)-2(B的权重) = -1
,此时-1 < 0
,那么则调用B(也就是中奖的奖品是B咯),其他的以此类推,还有一点比较重要的就是将每个权重(中奖率)x10000(或者更高)
,然后随机的数字在总权重(所有中奖率相加)*10000
,这个概率会更均匀分布。