首页 >后端开发 >php教程 >求一个中奖概率的算法

求一个中奖概率的算法

WBOY
WBOY原创
2016-06-06 20:39:01820浏览

需求
我有一个会员系统,每位会员发布文章后,发布文章次数+1
然后,我会发送1-200元的人民币
我想让发布文章越多的会员大奖的概率越大,但是不能超过200元。

回复内容:

需求
我有一个会员系统,每位会员发布文章后,发布文章次数+1
然后,我会发送1-200元的人民币
我想让发布文章越多的会员大奖的概率越大,但是不能超过200元。

首先假设我们给会员设置一个基准奖励金额 x,x 的值在 1-200 之间,发布文章越多 x 的值越大。这是合理的。至于 x 的算法,可以考虑类似这样的曲线,当横轴增加时,纵轴无限接近于 2。稍微修改一下公式,就能得出一个当文章数量增加时,基准金额无限接近于 200 元的算法。
求一个中奖概率的算法

有了这个基准奖励,我们可以在它周围设置一个“摇摆幅度”,使得奖励看起来有随机性。比如对某会员我得出基准奖励为 50 元,那么当摇摆幅度为 10 元时,我会随机从 40-60 元之间抽取一个值作为最终奖励。这样就能达到你的要求:发布文章越多,得奖的金额也越多,但也不是一个固定的值。

额,楼上的厉害啊。提供另一个思路:

  1. 均分概率
    1-200 元,分 200 节点,平均分布概率是,每个节点 1/200。
    即:1/200 + ... = 1

  2. 引入文章数因素f(0 ~ 1)
    第1 - 100 节点第 i 节点的概率为:
    (1 - f^i)/200
    第 101 - 200 节点第 i 节点的概率为:
    (1 + f^(201-i))/200
    (1 - f^1)/200 + (1 - f^2)/200 + (1 - f^3)/200 + (1 - f^4)/200 + ... + (1 - f^100)/200 + (1 + f^100)/200 + ... + (1 + f^3)/200 + (1 + f^2)/200 + (1 + f^1)/200 = 1

  3. 确定 f 值
    f 值如上面童鞋所话,是arctan函数,极限值为 1.

这个的缺点是:中间隔断,没有按照曲线平滑增长。

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn