微信抢红包小技巧(python模拟100万次)
之前,在网上看到一篇文章,说多人抢红包时,微信红包金额的分配规则是0.01元到当前剩余金额平均数的2倍(最后一个人金额为当前剩下的所有金额),所以写了一个python程序,模拟量一百万次,分析了一下抢微信红包的小技巧。
(所有结论都基于某篇文章所说的微信红包金额的分配规则,如果实际规则不是这样,那么以下分析就都是错的)
假设金额50元,有5个人抢,那么计算可得:
第1个人抢,他的金额区间就是[0.01,20](50除以5乘以2)
第2个人抢,他的金额区间就是[0.01,24.99]
第3个人抢,他的金额区间就是[0.01,33.32]
第4个人抢,他的金额区间就是[0.01,49.97]
第5个人抢,他的金额区间就是[0.01,49.96]
可以看到:越往后抢的,理论上能拿到的红包上限越高(虽然可能性很小,但理论上运气好还是能拿到的)
那是不是越往后拿的红包就普遍更大呢???
并不是!!!理论上限高,不代表平均值更大,通过100万次模拟数据统计加以分析,可以得到5人按先后顺序得到手气王的可能性分别为0.22, 0.2, 0.2, 0.19, 0.19,即在人数较少时,先抢后抢差异不大。,(但是当人数较多时,比如几十个人,则后抢手气最佳的可能性更大)
运行结果如下图:
***********************
第1个人
max:20.00 min:0.01
average:10.01
***********************
第2个人
max:24.99 min:0.01
average:10.00
***********************
第3个人
max:32.92 min:0.01
average:10.00
***********************
第4个人
max:47.88 min:0.01
average:10.00
***********************
第5个人
max:47.39 min:0.01
average:9.99
手气最佳概率分布: [0.22, 0.2, 0.2, 0.19, 0.19]
附上代码,大家可以自己运行一次试试。
from random import randint,random,uniform
import numpy as np
people = 5#人数
times = 1000000#模拟次数
luck = []
for i in range(people):
luck.append([])
for i in range(times):
money = 50
for j in range(people):
if(j == people - 1):#最后一个人金额即为当前剩下的所有金额
packet = round(money,2)
elif(money > 0.01):
if(money - money/(people-j)*2 < 0.01*(people-j-1)):
packet = round(uniform(0.01,money/(people-j)*2 - 0.01*(people-j-1)),2)
#不能提前抢光红包
else:
packet = round(uniform(0.01,money/(people-j)*2),2)
else:
packet = 0.01
luck[j].append(packet)
money = money - packet
#print(luck)
for i in range(people):
print('***********************')
print('第{}个人'.format(i+1))
print('max:%.2f'%max(luck[i]),'min:%.2f'%min(luck[i]))
#print('min:%.2f'%min(luck[i]))
print('average:%.2f'%np.mean(luck[i]))
most_luck = [0]*people
matrix = np.array(luck).T
for i in range(times):
a = list(matrix[i])
position = a.index(max(a))
most_luck[position] = most_luck[position] + 1
for i in range(people):
most_luck[i] = round(most_luck[i]/times,2)
print(most_luck)
总结如下:
1.先抢不可能有大红包,后抢可能有大额红包
2.人少时,手机最佳的可能性均等;人多时,后抢手气最佳的可能性更大
(但这并不意味着后抢更好,毕竟后抢有可能抢不到!!!)
微信抢红包小技巧(python模拟100万次)的更多相关文章
- [小技巧] Python 脚本暴力破解 HC2600 机顶盒管理密码
家里最近接入了广电有线电视,配了三个创维 HC2600 机顶盒,并且每个机顶盒还带有无线路由器功能. 免费赠送 Internet 接入服务倒也没什么,不过机顶盒内置的 WIFI 实在有点寒酸:只支持 ...
- 30个有关Python的小技巧,给程序员的 30 个基本 Python 贴士与技巧
30个有关Python的小技巧 2013/07/04 · Python, 开发 · 4 评论 · Python 分享到: 66 本文由 伯乐在线 - Kevin Sun 翻译.未经许可,禁止转载!英文 ...
- 30个有关Python的小技巧
从我开始学习python的时候,我就开始自己总结一个python小技巧的集合.后来当我什么时候在Stack Overflow或者在某个开源软件里看到一段很酷代码的时候,我就很惊讶:原来还能这么做!,当 ...
- <转> 30 个有关 Python 的小技巧
目录[+] 1.1 拆箱 1.2 拆箱变量交换 1.3 扩展拆箱(只兼容python3) 1.4 负数索引 1.5 切割列表 1.6 负数索引切割列表 1.7指定步长切割列表 1.8 负数步长切割列表 ...
- 让你瞬间萌比的35个python小技巧
今天在看python算法的时候,看到一篇关于python的小技巧.瞬间萌比了,原来python也可以这样玩,太神奇了.萌比的是原来这么简单的东西自己都不知道,虽然会写.废话不多说了,开始上菜. 1.拆 ...
- 关于Python ,requests的小技巧
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xie_0723/article/details/52790786 关于 Python Request ...
- Python入门:数据结构的3个小技巧
这是关于Python的第11篇文章,主要介绍下数据结构的3个小技巧. 排序: 使用sorted函数实现排序. sorted函数按照长短.大小.英文字母的顺序给每个列表的元素进行排序.这个函数经常在数据 ...
- Python Requests 小技巧总结
关于 Python Requests ,在使用中,总结了一些小技巧把,分享下. 1:保持请求之间的Cookies,我们可以这样做. import requests self.session = req ...
- Python语言防坑小技巧
Python语言防坑小技巧 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.赋值即定义 1>.运行以下代码会出现报错 #!/usr/bin/env python #_*_ ...
随机推荐
- 解决ASP.NET Core在Task中使用IServiceProvider的问题
前言 问题的起因是在帮同事解决遇到的一个问题,他的本意是在EF Core中为了解决避免多个线程使用同一个DbContext实例的问题.但是由于对Microsoft.Extensions.Depende ...
- Android OOM 问题探究 -- 从入门到放弃
一.前言 最近客户反馈了一些OOM的问题,很早之前自己也有简单了解过OOM的知识,但时间久远,很多东西都记不清了. 现在遇到这个OOM问题,也即趁此搜索了一些资料,对OOM问题做一些探究,把资料记录于 ...
- linux centos7开启防火墙端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload
- 解决git报错
解决git报错:fatal: unable to access "https://github.com/.../.git/" 1.在git中执行(记得分开执行) git confi ...
- 微信小程序/校园社区论坛/微信云开发/云函数
一.框架来源 1.非常非常感谢B站up主"梦千的曾哥哥"的开源框架. 没有他就没有这个小程序.如果有想做的同学,可以直接移步他的视频那里开始学习.我水平不够,就不教具体怎么配置环境 ...
- 中国剩余定理+扩展中国剩余定理 讲解+例题(HDU1370 Biorhythms + POJ2891 Strange Way to Express Integers)
0.引子 每一个讲中国剩余定理的人,都会从孙子的一道例题讲起 有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二.问物几何? 1.中国剩余定理 引子里的例题实际上是求一个最小的x满足 关键是,其中 ...
- identity4 系列————持久化配置篇[五]
前言 上面已经介绍了3个例子了,并且介绍了如何去使用identity. 但是在前面的例子中,我们使用的都是在内存中操作,那么正式上线可能需要持久到数据库中. 这里值得说明的是,并不一定一定要持久化到数 ...
- k8s命令补全方法
正常安装了k8s后,使用kubect 工具后接的命令不能直接tab补全 命令补全方法: yum -y install bash-completionsource /usr/share/bash-com ...
- 端口安全 | DHCP snooping
1.端口安全用于防止mac地址的欺骗.mac地址泛洪攻击.主要思想就是在交换机的端口下通过手工或者自动绑定mac地址,这就就只能是绑定的mac地址能够通过. 2.通过静态的端口绑定:将mac地址手工静 ...
- lombok Builder注解
使用了@Builder 将会失去无参构造函数 可以通过 @Tolerate 来添加构造函数