JAVA

抽奖功能实现(纯算法)

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,这个概率会更均匀分布。

上一篇 下一篇

猜你喜欢

热点阅读