python模拟微信发红包,并验证随机性
python模拟微信发红包,输入金额和红包个数,得到结果,多次发红包,验证先抢后抢红包大小的随机性是否一样。
1、思路
如100元发5个红包,结合几个点几个线段的数学知识,需要在0-100之间取4个不重复的数,即可得到5个区间,每个区间值即为红包金额。
2、代码
import randomdef fenhongbao(money, num): # 钱数最小为1分,为了便于计算取值,需乘100,变成1元进行取值,在1和money*100之间取num-1个点,即可得到num个区间,区间大小即为红包金额。 list_num = random.sample(range(1, int(money*100)), num-1) # 取点list_num.extend([0, int(money*100)]) # 扩展区间list_num.sort() # 排序list_money = [(list_num[index+1]-list_num[index])/100 for index in range(num)] # 区间相减,得到红包金额for i in range(len(list_money)): # 输出红包金额print(f'第{i+1}个人抢到:\t{list_money[i]}元')print(f'恭喜:第{list_money.index(max(list_money))+1}个人手气最佳,抢到{max(list_money)}元,记得请客哦!')if __name__ == '__main__':print('\n========随机分红包========\n')money = float(input('请输入金额(元):')) # 对输入的金额转为浮点型num = int(float(input('请输入红包个数:'))) # 对输入的红包个数取整# 如果输入的金额或红包个数不正确,则提示if money <= 0 or (money*100-round(money*100, 0)) > 10**-10 or num <= 0 or money/num <= 0.01:print('请检查:\n1、输入金额是否大于0,且最小单位为分;\n2、红包个数是否大于0;\n3、每个红包金额至少为0.01元!')else:fenhongbao(money, num)
运行结果如下:
========随机分红包========请输入金额(元):100
请输入红包个数:5
第1个人抢到: 12.34元
第2个人抢到: 46.48元
第3个人抢到: 3.94元
第4个人抢到: 4.53元
第5个人抢到: 32.71元
恭喜:第2个人手气最佳,抢到46.48元,记得请客哦!
3、验证数据
1000块钱发20个红包,执行一次结果如下:
第1个人抢到: 39.68元
第2个人抢到: 60.7元
第3个人抢到: 35.38元
第4个人抢到: 29.43元
第5个人抢到: 87.84元
第6个人抢到: 30.9元
第7个人抢到: 20.05元
第8个人抢到: 19.8元
第9个人抢到: 55.94元
第10个人抢到: 71.38元
第11个人抢到: 9.75元
第12个人抢到: 30.2元
第13个人抢到: 97.34元
第14个人抢到: 130.62元
第15个人抢到: 29.32元
第16个人抢到: 108.66元
第17个人抢到: 39.45元
第18个人抢到: 76.05元
第19个人抢到: 17.43元
第20个人抢到: 10.08元
恭喜:第14个人手气最佳,抢到130.62元,记得请客哦!
执行1次和10次平均结果如下:
执行100次和1000次平均结果如下:
可以看出随机性基本是一样,先抢、后抢红包的大小的期望是大致相等的,所以趁红包在就抢吧。
python模拟微信发红包,并验证随机性相关推荐
- python模拟微信发红包算法_微信红包的随机算法是怎样实现的?
有人问过微信的人,大致是这样: 先上代码: public static double getRandomMoney(RedPackage _redPackage) { // remainSize 剩余 ...
- 编写一个函数,简单模拟微信发红包算法。
编写一个函数,简单模拟微信发红包算法. 函数有两个参数:一个参数表示红包总金额,默认值为100:另一个参数表示红包数量,默认值为15. 所有随机产生的红包金额(保留两位小数)存放在一个列表(同时作为函 ...
- Random类模拟微信发红包
//用随机数模拟微信发红包的场景 import java.util.Random; import java.util.Scanner; public class Demo4 { public stat ...
- 编写一个函数,模拟微信发红包的红包分配过程。函数有两个参数:一个参数表示红包总金额,默认值为100,另一个参数表示红包数量,默认为10。程序输入:红包总金额和红包数量;程序输出:每个红包的金额。要求:
题目 编写一个函数,模拟微信发红包的红包分配过程.函数有两个参数:一个参数表示红包总金额,默认值为100,另一个参数表示红包数量,默认为10.程序输入:红包总金额和红包数量:程序输出:每个红包的金 ...
- python实现微信发红包
微信发红包规则 第一种,单独给某个好友发红包:0 < 金额 <= 200,金额支持两位小数 第二种,群红包,有以下三种类型: 1) 拼手气红包:1 <= 红包个数 <= 当前群 ...
- Java模拟微信发红包
作者说: 这个实验运用到了Random类的生成随机数的知识.String类的format方法保留两位小数.灵活运用类型转换. 这次注释写的很详细,因为我做这个实验的时候花了很长时间,我第一次用的方法不 ...
- Java模拟微信发红包,一看就会
自2014年1月26日悄悄上线后,微信红包迅速流行开来,其火爆程度,不亚于此前的"打飞机"小游戏.而收到红包后想要提现,就必须绑定银行卡,这样一来,绑定微信支付的用户数量大增. 先 ...
- 用Java写微信红包实现模拟微信发红包
继承关系如下 题目: 某软件有多名用户(User类),某群聊中有群主(Manager类)和多名普通成员(Member类),现群主大方给成员发红包.红包的规则:群主发一笔金额,从群主余额中扣除,红包分配 ...
- h5拼手气红包java_Java模拟微信发红包(普通红包、拼手气红包)
假设红包总额M元,分给N个人. 满足条件: 如果是普通红包,每个人获得的金额都一样: 如果是拼手气红包,则有所区别,但不能金额过于离谱,比如第一个获得的太多,以至于后来的人都几乎没得分. 注意点: 1 ...
最新文章
- 为什么有些公司不愿意微服务化,因为“太南了”
- +智能”时代,华为如何将AI赋能到各行各业?
- sklearn识别单张自定义手写数字图片
- 计算机网络与应用周林 课后题,阅读下面文章,完成
- HDU 4631 Sad Love Story 平面内最近点对
- 程序员获取编程灵感的10 种方式
- C++ 使用 TinyXml 解析 XML 文件
- Linux笔记-centos7替换yum及编译安装mydumper
- LNK快捷方式漏洞利用方式 exp制作教程
- 浅谈assert()函数的用法
- 织梦php 文章采集规则,织梦DedeCms采集有什么规则?织梦DedeCms采集规则图文教程_好特教程...
- SpringMVC课堂笔记
- java获取docx_java使用poi读取doc和docx文件的实现示例
- C 语言 数据类型及所占字节数
- 方法重写的两同两小一大原则
- 单片机人体感应灯c语言,红外人体感应灯单片机方案
- rtx腾讯通环境配置
- ios label文字行间距_iOS 设置label的行间距教程
- lazarus ui设计_Golang绑定VCL和LCL组件
- IE浏览器修复与优化
热门文章
- win7已经阻止此发行者在您的计算机上运行软件,win7提示由于无法验证发行者所以Windows已经阻止此软件怎么办...
- 基于jquery的轮播图组件开发-1
- flutter项目运行到IOS手机
- 复盘二: 了解自我和管理自我,诚惶诚恐,保持敬畏-- 宁向东的清华管理学课总结
- (转)卡马克卷轴算法研究
- CMake Error: Could not find a package configuration file provided by “serial“
- CSS画卡通人物:皮卡丘
- 个人中心页面的UI设计知识点
- 易經大意(21) 三和 韓長庚 著
- 解决this application failed to start