【进阶】娱乐、网游插件的抽奖概率算法分析

Myer 离骚 2016-12-19 684

本帖最后由 离骚 于 2016-12-19 10:04 编辑

{:4_168:}小骚骚爸爸课堂开课了,今天讲的是抽奖算法。
现阶段绝大部分娱乐插件的抽奖概率设置都是
【10%,20%,30%】等这类的直接设置。

具体代码实现如下:【10%概率设定】
概率=10
随机=取随机数(1,100)
如果真 (随机<概率)
恭喜您中奖了

此等概率设定有一定的局限性,这使你的插件在面临用户自定义设置的时候,需要考虑将一个奖池里的所有奖品获得概率累计不能超过100%。
这真是一件尴尬的事情。
另外,当机器人用户要开设指定奖品双倍概率获得的时候,这就GG了,又要打乱重新设置所有奖品的概率。

当机器人用户需要设置小数点的概率时,以上的代码就又要改动了。
具体案例如下:【10.5%概率设定】
概率=105
随机=取随机数(1,1000)
如果真 (随机<概率)
恭喜您中奖了

于是乎,按奖品比重计算中奖率的算法出现了

具体实现思路如下:
假设有三个奖品,分为【普通】【稀有】【传奇】
名为传奇的奖品,给他设定一个比重为10
名为稀有的奖品,给他设定一个比重为30
名为普通的奖品,给他设定一个比重为200

那我们该如何计算三个奖品的中奖概率呢?
公式为:(奖品比重/总比重*100)%
【传奇】(10/240*100)%=4.16666666%
【稀有】(30/240*100)%=12.5%
【普通】(200/240*100)%=83.3333333%
总的算下来,是否所有奖品概率总和永远不会超过100%?
那么,我们的目的不就是达到了?

如果某天,我们要使【传奇】奖品的中奖概率提升双倍,那么我们只需将它的比重改为20就ok了。
【传奇】(20/250*100)%=8%
【稀有】(30/250*100)%=12%
【普通】(200/250*100)%=80%


具体实现代码,自己思考去吧~~就当是留下的作业

最新回复 (3)
  • Myer qinyu521 2016-12-19
    0 2
    {:4_154:}希望多出网游插件
  • Myer 夏时 2016-12-19
    0 3
    {:4_168:}已经明白了支持我du
  • Myer 冬季 2016-12-28
    0 4
    应该是随机<=概率
    • MyPCQQ官方站
      5
        登陆 注册 QQ登陆(暂不可用)
返回