基于PHP的微信红包的算法研究

基于PHP的微信红包的算法研究
突然幻想到红包校友微信群,我把10元红包总额,28的人支持随机采集。

于是出现了一个有趣的结果:

A得到0.26元。

B有0.29元。

C得到0.02元。

D得到0.56元

E得到0.64元

......

什么方法做微信吗在简单的百度下,目前没有官方的解释。这里有一个流行的讨论,链接冲压,但它们太深,无法讨论链接。

我已经尝试了我自己的逻辑,这个算法需要满足以下要求:

1,每个人都应该能收到红包。

2。每个人收到的红包总数=总数;

3、每人收到一个红包的数额,但也不能太差,否则就不感兴趣了;

4,算法必须简单,否则我很抱歉腾讯的标志;

在形式化编码之前,建立一个渐进模型来分析规则。

总金额10元,随机抽取N人:

n = 1

红包的金额是x元。

n = 2

为了确保第二个红包能够正常发出,第一个红色包的数量从0.01到9.99是一个随机数。

第二红包= 10 -第一红包金额;

n = 3

在1=0.01和0.98之间的随机数的红色数据包。

一个随机数的红包2 = 0.01(10红包1-0.01)

红色包3 = 10 -红色包1 -红色包2

......

在这一点上,法律已经来了。开始编码!

PHP代码

标题(内容类型文本/ HTML;字符集= UTF-8); / /输出不乱码,你知道
总计= 10;总数为红色
8美元,8个红色,8人得到支持。
$ = 0.01;每个人至少可以收到0.01元。

($ i = 1;$ i;
{
safe_total = $(美元美元美元总数我* $分钟); / /随机安全限制
钱= mt_rand美元(美元100美元safe_total民*,* 100)/ 100;
总计=总金额-美元;
回声,即红包美元。美元的钱。'yuan,平衡:'总'元'美元;
}
回声。$数红包:'总美元。'yuan,余额:0元;
进去看看,波动太大了,这个数据太无聊了!

第一个红包:7.48元,余额:2.52元。

第二红包:1.9元,余额:0.62元。

第三个红包:0.49元,余额:0.13元。

第四个红包:0.04元,余额:0.09元。

第五个红包:0.03元,余额:0.06元。

第六个红包:0.03元,余额:0.03元。

第七个红包:0.01元,余额:0.02元。

第八个红包:0.02元,余额:0元。
改进,用平均值作为随机安全极限来控制波动

PHP代码

标题(内容类型:文本/ HTML;字符集= UTF-8); / /输出不乱码,你知道
总计= 10;总数为红色
8美元,8个红色,8人得到支持。
$ = 0.01;每个人至少可以收到0.01元。

($ i = 1;$ i;
{
safe_total美元=($总($民$我)* $ min)/($民$我); / /随机安全限制
钱= mt_rand美元(美元100美元safe_total民*,* 100)/ 100;
总计=总金额-美元;
回声,即红包美元。美元的钱。'yuan,平衡:'总'元'美元;
}
回声。$数红包:'总美元。'yuan,余额:0元;
输出结果如下所示

第一个红包:0.06元,余额:9.94元。

第二红包:1.55元,余额:8.39元。

第三个红包:0.25元,余额:8.14元。

第四个红包:0.98元,余额:7.16元。

第五个红包:1.88元,余额:5.28元。

第六个红包:1.92元,余额:3.36元。

第七个红包:2.98元,余额:0.38元。

第八个红包:0.38元,余额:0元。

以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部