您的位置:

红包随机分配算法php,随机红包规律

本文目录一览:

随机红包金额如何决定的

从工程角度来说,红包分配算法需要简单粗暴的实现。

有些人的算法过于复杂,第几个人领取都要面面俱到的计算,考虑因素太多,工程实现上真的没必要。

其实只需要按照如下框架即可:

1. 发红包时,按照设计的快速随机算法,将红包分好若干份。

2. 按照设计的评估算法,对得到的红包分配进行校验。

3. 如果校验不通过,如贫富差距过大,则重复随机分配。

4. 如果若干次重复,如5次,则停止重复,就按照当前分配。

5. 再有用户请求红包,直接队列化请求,再从红包序列中取出对应编号红包。

上述方案的优势是:

1. 只需“一次”计算。

随机算法选择简单粗暴的即可,系统按照校验策略对其评价,不满足则有限次重复,直到满足或次数太多为止。

2. 此后就只有读取。

后续操作完全是读取缓存,无需密集计算。

那么是不是还有更简单粗暴的方案呢?还是有的,那就是伪随机序列查表法。

百万千万级别的红包请求,如果每次都按照真随机来计算,仍然会有不小的计算压力。

索性预先计算得到若干伪随机分配方案,调用时只需要随机选择一个即可。

举例来说,有人的红包是10元分配给5人,系统预先存有多种分配方案,如1,1,2,3,3,或1,1,2,2,4,请求时随机选取一个方案即可。

当然,各种组合未必能穷尽,但是只需要让用户在有限次操作中觉得这是随机就够了。

扩展资料

微信红包是腾讯旗下产品微信于2014年1月27日推出的一款应用,功能上可以实现发“红包”、查收发记录和提现。

2014年4月14日,“安卓手机用户只要用微信扫描身边出现的红色二维码,通过腾讯应用宝成功安装其他应用软件,即可领取微信红包。

2019年2月10日,微信官方发布2019年春节数据报告,除夕到初五,8.23亿人次收发微信红包。

设计简单

在“微信红包”这个功能的设计上,遵循了简单的原则。发送方通过“新年红包”公众号,选择发送红包的数量和金额,以及祝福的话语,通过“微信支付”进行支付,就可以发送给好友;接收方则在打开后获得相应收益,只需要将储蓄卡与微信关联,就可以在一个工作日后提现。2014年1月27日前,用户在抢红包之前,要先写上祝福,然后才可以抢。在这之后,已经改为先抢红包再发送祝福的过程。

怎么样通过微信随机生成红包金额算法php版

php 有个函数叫 rand() 产生随机数,你去看看手册上的这个函数吧。

微信红包的随机算法是怎样的?

1)红包大小服从截尾正态分布,其好处是减少抽取红包大小分布的方差,让更多的人抽取的红包在均值附近,同时仍给一小部分人抽取大红包的机会,总体来说增加了红包抽取人的积极性和游戏的公平性;

2)抽取红包大小与抽取红包先后无相关性。一种可能的红包产生机制是:当发红包者准备红包的时候,程序自动依照截尾分布产生了相应大小,相应个数的红包,然后随机发给抽取红包的人。同样,这样的一个随机过程有助于增加游戏的公平性,也减少了红包抽取人投机操作。

钱包钱数满足截尾正态随机数分布。大致为在截尾正态分布中取随机数,并用其求和数除以总价值,获得修正因子,再用修正因子乘上所有的随机数,得到红包价值。

这种分布意味着:低于平均值的红包多,但是离平均值不远;高于平均值的红包少,但是远大于平均值的红包

微信红包的随机算法是怎样实现的?

我们在一个20人的群中,自己发红包以及结合其他人发出红包的情况,整合成两轮的数据。每次金额设置都是20块并且有20个,第一轮是发了15次,第二轮是发了19次,总结成表格,然后为了避免突发的数据影响判断,我们将两轮数据杂糅从而生成了其他的三轮数据,一共是五轮数据。罗列如下表,高亮的数据为最佳手气。每一列的数据最早抢到红包的在最底端,越往上越晚抢。

从所有黄色的数值(最佳手气金额)可看出,所有最佳手气值都在平均值*2的前后附近(平均值=总金额/红包总个数,这里平均值=20/20=1),事实上确实如此,可通过微信红包分发算法得到验证,算法具体见后文

然后我们选取部分数据开始制作散点图。横轴为1-20,分别表示抢到红包的人的编号,随递增而越早。也就是20代表最早抢到的人。纵轴为金额。同样的形状颜色的点代表一次发红包,然后我们抓取部分数据显示为散点图,越密集代表该顺序位的用户得到的金额越稳定。散点图如下:

规律一:我们可以看到,所有红包大多数金额分布在0.5到1.5元之间,显示为图中方框所示,大部分点都分布在这个位置。然后是顺序位密集程度的对比,可以发现20、19,也就是最先抢到红包的人,小圆圈所示基本的点都集中在小范围,说明先抢红包的人得到的金额会比较稳定,但同时最佳手气的概率也比较低。大圆圈所示的是极不稳定,飘忽的金额分布,表示越晚抢红包得到的金额会飘忽不稳,但同时,抢到最佳手气等大金额的红包概率也比早抢的高。

根据上面的分析,我们又写了一个过滤计数函数,针对金额的分段的红包个数进行统计:

比如2.0-2.5

得到如下金额分布:

折线图:

规律二:绝大多数的红包的金额都集中在1-1.5,也就是说20块钱发20个红包的金额分布集中在比平均数大一点点的附近,同时较大幅超过平均数金额的红包大大少于低于于平均数的红包数量。

那我们继续扩大数据的规模,将几轮数据的均值和标准差分别做成折线图:

综合上面各个折线图的情况,我们可以得到越早抢红包的标准差越小,越晚抢红包的标准差越大,但同时,由均值和总额可以看出来,越早抢红包的均值往往要更高,红包金额得到最佳手气概率也会相对较小,越晚抢红包的人则得到最佳手气等大手气的概率更大。

为了得到更为趋近规律的曲线和规律,我们决定将两轮真实数据合并起来,然后给出幂函数的趋近线(虚线),如下图:

由于均值受极值波动影响较大,所以我们去除一些因为偶然差产生的极端点(圆圈的点)从而发现是递增的趋势。

规律三:可以很明显的看到,均值是随着抢红包的越晚而缓慢递减,标准差值同时也往上递增,这个趋势结合之前的分析,我们猜想,即标准差越大说明,领取到最大的红包和最小红包的风险越大,也就是说越晚抢标准差越大,对于冒险主义者来讲是最好的,因为他有很大概率获得最大的金额,但也大概率获得最小的红包,风险与收益并存;均值越大,说明每次都拿到一个不大不小的红包,虽然获得最小和最大金额红包的概率很小,但起码不亏本,也就是说越早抢,均值越稳定,这比较适合不喜欢冒险的人。

验证预测结果:

21:24分 发送预测结果到另一位同学微信:

 

随后开始发红包:

结果:

最佳手气为第8个人且金额为1.13

与预测结果一致,规律基本正确!

总结:

(1)最佳手气为1.13块,根据我们推导的预测公式=总额/红包总个数*2*随机数(0-2的double数), 也就是说最佳手气在总额/红包总个数*2值的前后附近。这里我们判断在0.8-1.3之间,推断正确

(2)平均值为0.5元,0.5-0.8元的红包有3个,小于0.5的红包有6个,说明大于平均值的红包个数多于小于平均值的个数。与我们的第二点预测完全正确

(3)最佳手气位置:根据我们的散点图发现,最先抢到红包的人,得到的金额会比较稳定,但同时最佳手气的概率也比较低。表示越晚抢红包得到的金额波动较大,但同时抢到最佳手气等大金额的红包概率也比早抢的高。所以我们推断,最佳手气位置在最后20%-30%之间。

微信红包随机分发算法c++模拟:

基本思路:每次抢到一个红包金额等于:红包剩余金额/红包剩余个数*2*随机数(0-1的double型),如果计算的结果小于等于0.01,则取0.01值

主要代码:

double packages[50000];

double Luckiest_money=0;

void getPackage(int remainSize,double remainMoney){

srand((unsigned)time(NULL));

for(int i=0;i

微信红包的随机算法是怎样实现的

比如100元,由10个人分,那么平均一个人是10元钱。然后付款后,系统开始分份儿。

第一份:系统由0~10元之间随机一个数,作为这一份的钱数,设x1。

第二份:剩下的钱(100-x1),系统由0~(100-x1)/(10-1)随机一个数,作为这份的钱数,设x2

.。。。

第n份:剩下的钱(100-x1-x2-...-xn),系统由0~(100-x1-x2-...-xn-1)/(10-n)随机一个数,作为这个份的钱数,设为xn

当用户进来拿红包的时候,系统由0~9之间随机一个数,随机到几,就取第几份红包,然后将这个数存到list里。当之后的用户抽到相同的随机数时,则将这个数+1,如遇相同再+1,直至list满,红包发完。

php之红包发放规则

使用PHP发红包,当我们输入红包数量和总金额后,PHP会根据这两个值进行随机分配每个金额,保证每个人都能领取到一个红包,每个红包金额不等,就是要求红包金额要有差异,所有红包金额总额应该等于总金额。

红包随机分配算法php,随机红包规律

2022-12-01
php固定红包(php随机红包算法)

2022-11-08
php微信发红包(微信红包能发666元吗)

2022-11-09
包含红包json代码的词条

本文目录一览: 1、C语言红包代码 2、求 ecshop 一次使用多个红包的功能的代码!!!! 3、C语言编程:求一段发红包的代码。(随机数,能规定红包总钱数总人数,每个人拿到的钱不为0) 4、C语言

2023-12-08
c语言模拟红包,c语言微信红包

2023-01-08
PHP数组随机取三个

2023-05-19
PHP随机函数生成随机数

2023-05-11
php随机数算法,php数组随机数

2023-01-06
php做扫雷(php红包扫雷平台源码)

2022-11-09
PHP随机数生成器

2023-05-11
PHP随机数生成器

2023-05-11
python编写抢红包代码算法,抢红包编程

2022-11-20
php取随机数字,php产生随机数的函数

2022-11-28
php生成随机值并记录cookie,php中生成随机整数的函

2022-11-29
用PHP生成随机数的方法和实例

2023-05-20
php随机数(php随机数字不重复)

2022-11-15
学习php随笔,PHP笔记

2022-11-25
java群,JAVA群主发随机红包

2023-01-04
Python微信模拟发红包

在本文中,我们将使用Python编程语言来模拟微信发红包的过程。我们将从以下几个方面进行详细阐述:红包生成、发红包、抢红包和查询红包信息。 一、红包生成 在微信模拟发红包的过程中,首先需要生成红包。红

2023-12-08
php根据概率随机,php随机抽奖

2022-11-22