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模拟微信发红包,并验证随机性相关推荐

  1. python模拟微信发红包算法_微信红包的随机算法是怎样实现的?

    有人问过微信的人,大致是这样: 先上代码: public static double getRandomMoney(RedPackage _redPackage) { // remainSize 剩余 ...

  2. 编写一个函数,简单模拟微信发红包算法。

    编写一个函数,简单模拟微信发红包算法. 函数有两个参数:一个参数表示红包总金额,默认值为100:另一个参数表示红包数量,默认值为15. 所有随机产生的红包金额(保留两位小数)存放在一个列表(同时作为函 ...

  3. Random类模拟微信发红包

    //用随机数模拟微信发红包的场景 import java.util.Random; import java.util.Scanner; public class Demo4 { public stat ...

  4. 编写一个函数,模拟微信发红包的红包分配过程。函数有两个参数:一个参数表示红包总金额,默认值为100,另一个参数表示红包数量,默认为10。程序输入:红包总金额和红包数量;程序输出:每个红包的金额。要求:

    题目 ‬‬编写一个函数,模拟微信发红包的红包分配过程.函数有两个参数:一个参数表示红包总金额,默认值为100,另一个参数表示红包数量,默认为10.程序输入:红包总金额和红包数量:程序输出:每个红包的金 ...

  5. python实现微信发红包

    微信发红包规则 第一种,单独给某个好友发红包:0 < 金额 <= 200,金额支持两位小数 第二种,群红包,有以下三种类型: 1) 拼手气红包:1 <= 红包个数 <= 当前群 ...

  6. Java模拟微信发红包

    作者说: 这个实验运用到了Random类的生成随机数的知识.String类的format方法保留两位小数.灵活运用类型转换. 这次注释写的很详细,因为我做这个实验的时候花了很长时间,我第一次用的方法不 ...

  7. Java模拟微信发红包,一看就会

    自2014年1月26日悄悄上线后,微信红包迅速流行开来,其火爆程度,不亚于此前的"打飞机"小游戏.而收到红包后想要提现,就必须绑定银行卡,这样一来,绑定微信支付的用户数量大增. 先 ...

  8. 用Java写微信红包实现模拟微信发红包

    继承关系如下 题目: 某软件有多名用户(User类),某群聊中有群主(Manager类)和多名普通成员(Member类),现群主大方给成员发红包.红包的规则:群主发一笔金额,从群主余额中扣除,红包分配 ...

  9. h5拼手气红包java_Java模拟微信发红包(普通红包、拼手气红包)

    假设红包总额M元,分给N个人. 满足条件: 如果是普通红包,每个人获得的金额都一样: 如果是拼手气红包,则有所区别,但不能金额过于离谱,比如第一个获得的太多,以至于后来的人都几乎没得分. 注意点: 1 ...

最新文章

  1. 为什么有些公司不愿意微服务化,因为“太南了”
  2. +智能”时代,华为如何将AI赋能到各行各业?
  3. sklearn识别单张自定义手写数字图片
  4. 计算机网络与应用周林 课后题,阅读下面文章,完成
  5. HDU 4631 Sad Love Story 平面内最近点对
  6. 程序员获取编程灵感的10 种方式
  7. C++ 使用 TinyXml 解析 XML 文件
  8. Linux笔记-centos7替换yum及编译安装mydumper
  9. LNK快捷方式漏洞利用方式 exp制作教程
  10. 浅谈assert()函数的用法
  11. 织梦php 文章采集规则,织梦DedeCms采集有什么规则?织梦DedeCms采集规则图文教程_好特教程...
  12. SpringMVC课堂笔记
  13. java获取docx_java使用poi读取doc和docx文件的实现示例
  14. C 语言 数据类型及所占字节数
  15. 方法重写的两同两小一大原则
  16. 单片机人体感应灯c语言,红外人体感应灯单片机方案
  17. rtx腾讯通环境配置
  18. ios label文字行间距_iOS 设置label的行间距教程
  19. lazarus ui设计_Golang绑定VCL和LCL组件
  20. IE浏览器修复与优化

热门文章

  1. win7已经阻止此发行者在您的计算机上运行软件,win7提示由于无法验证发行者所以Windows已经阻止此软件怎么办...
  2. 基于jquery的轮播图组件开发-1
  3. flutter项目运行到IOS手机
  4. 复盘二: 了解自我和管理自我,诚惶诚恐,保持敬畏-- 宁向东的清华管理学课总结
  5. (转)卡马克卷轴算法研究
  6. CMake Error: Could not find a package configuration file provided by “serial“
  7. CSS画卡通人物:皮卡丘
  8. 个人中心页面的UI设计知识点
  9. 易經大意(21) 三和 韓長庚 著
  10. 解决this application failed to start