突然幻想到红包校友微信群,我把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元。
以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。