现在在许多网站上都会有10个人抽獎抽中的概率的活动10个人抽奖抽中的概率的也是多种多样,这里介绍一下如何根据每种奖品的权重来10个人抽奖抽中的概率适用于多种10個人抽奖抽中的概率形式。
这里只考虑最简单的10个人抽奖抽中的概率实现所以暂时只为奖品设计如上4个字段。
见注释prize_name表示奖品名稱;prize_amount表示奖品数量,即本次10个人抽奖抽中的概率活动计划发放此奖品的数量;prize_weight表示奖品权重表示奖品被抽到的几率的比重,权重越大被抽到的几率越大,比如本次砸金蛋活动有4种奖品权重分别是1、2、3、4,总权重是10那么每种奖品被抽到的几率就是1/10,2/103/10,4/10 *
根据Math.random()产生一個double型的随机数,判断每个奖品出现的概率 //根据随机数在所有奖品分布的区域并确定所10个人抽奖抽中的概率品 }
10个人抽奖抽中的概率的逻辑可鉯用下面这张图表示:
分析:如上图为了便于计算和理解,设置每种奖品的权重分别为12,34,所以被抽到的概率分别为0.10.2,0.30.4(本次活动中奖概率为100%)。
先生成一个随机数randomNumber然后根据随机数所处区域判断奖品: 尝试10个人抽奖抽中的概率10000次的结果如下:
每类奖品获奖佽数比例刚好大约为1:2:3:4,学过概率的你肯定知道10个人抽奖抽中的概率次数越多测试结果越准确~~
如果计划中奖率是100%的话,那么10个獎品只能10个人抽奖抽中的概率10次所以还要根据实际情况设置每种奖品数量和权重。
如果需要设置中奖率不为100%可以添加一个“伪奖品”,并为其设置权重那么抽到这个“伪奖品”的概率就是不中奖的概率。
如果在10个人抽奖抽中的概率过程中某类奖品抽完了可鉯做个判断,如果此奖品的剩余数量为0则重新抽取奖品,直到抽到其他奖品位置