要写个抽奖的程序,有概率和数量设置(数量针对高价值物品,当然低价值也不能排除)。现在卡在如果某一个奖品被抽完了,其所拥有的概率怎么被重新分配按其拥有的概率到其他奖品上。
比如设置奖品概率 10%、20%、30%、40%,其中10%的奖品数量为10个,当10个被抽完了,下次抽奖的时候把10%概率分给其他4个奖项。分配概率的时候发现只能无限等于1,有没有什么好的思路或者算法来把这个10%(其自身分配出去)分配完使其等于100%?
不用分配啊。本来是多少就是多少。因为就算你分配高了,该有的奖品数量应该是定了吧,高了意义也不大的。不管抽完没有,该什么概率就什么概率。比如a奖品,抽完了10份,但是又有人抽到了a,后台处理就是这个人什么都没有抽到。
经过网上找资料和网友的思路,找到一种逆向思维来解决这个问题。还是10%、20%、30%、40%举例,当10%的奖项数量抽完,本来随机数是生成0到100,现在去掉10%的10,即随机数生成0到90,0到20/90之间是20%的奖项,依次类推。分子不变,分母变,前面着相了,老想着100%100,哈哈,90%90也是1。