网上找的抽奖代码都不满意,自己动手丰衣足食,有需要的可以直接拿去用,不收版权费的。 ...
很早以前看到了这个算法,忘记叫什么名字了,这里就索性叫抽奖算法吧,知道的朋友不要扔砖头 一般抽奖的时候都分为 等奖, 等奖出现的概率最小, 等奖出现概率最大。 分为以下几步: 用一个变量标识下各个奖的登记,这个好像是叫做 权重 吧,一等奖记为 ,二等奖。。。。五等奖记为 。 求得权重总和,记为n 每个奖项都产生一个随机数,随机数介于权重和权重和n之间,记为m 求的各个权重 m的和,然后从大到小排序 ...
2012-11-12 09:20 4 3407 推荐指数:
网上找的抽奖代码都不满意,自己动手丰衣足食,有需要的可以直接拿去用,不收版权费的。 ...
抽奖算法理论 在一组奖品中,每个奖品有自己的概率,总概率为 1.0,也就是说在库存充足的情况下,必然能抽中其中的一个。 通过「谢谢参与」来作为无奖的奖品(也是一种奖品)。 需要注意的是:如果一组中所有的奖品,总概率之和不为 1.0,那么数值代表的概率就不是真实概率了,需要用所占比例来作为新 ...
假设有一个数组[100,400,200,300],它的意思是,总数是100+400+200+300=1000. 取到第一个数的概率是100/1000,取到第二个数的概率是400/1000......代码如下: 下面来解释一下这个算法,把数组抽象出来,假设为a,b,c,d,这四个概率 ...
不同概率的抽奖原理就是把0到*(比重总数)的区间分块 分块的依据是物品占整个的比重,再根据随机数种子来产生1-* 中的某个数 判断这个数是落在哪个区间上,区间对应的就是抽到的那个物品。 随机数理论上是概率均等的,那么相应的区间所含数的多少就体现了抽奖物品概率的不同 ...
算法实现 ...
博客园参考文章 github参考源码 ...
摘自网络 ...
场景: 生成10个随机红包, 奖池总金额10000, 最小500, 最大1000,奖池全部分配完。 分析: 第一想法简单, 直接生成500-1000之间的随机数,直接生成10个, 直接上代码。这种写法的问题在于最后一个金额生成的时候会出现问题,会有出现超过最大金额的可能性 ...