python生成随机红包的实例写法


Posted in Python onSeptember 02, 2019

假设红包金额为money,数量是num,并且红包金额money>=num*0.01

原理如下,从1~money*100的数的集合中,随机抽取num-1个数,然后对这些数进行排序,在排序后的集合前后分别插入0和money*100,组成新的集合

用新的集合,(后一个数-前一个数)/100得到红包的大小

然后使用红包的时候,从num个红包集合中随机拿一个,既是随机红包了

def redbags(money, num=10):
  import random
  choice = random.sample(range(1, money * 100), num - 1)
  choice.extend([0,money*100])
  choice.sort()
  return [(choice[i + 1] - choice[i]) / 100 for i in range(num)]

扩展内容:

进入红包思路主题

好了前面简单的介绍玩今天要使用的工具该进入正题说说红包的思路了,在你发红包的时候要填写两个重要参数就是红包的金额我命名为cash,人数person,在就要思考重要的一点就是红包的最大值和最小值,不会有点红包领到0吧,一般0.01为最小值,为什么会来说还有最大值,你想假如一个10块的红包6个人抢第一个能抢了9.99,那么第二个人只有剩下0.01,后面的人没得强,这不就有问题了。所以最大值应该就是红包总金额减去最小值乘以人数(10-0.01x6)这样才保证大家都有得抢当然最贪婪的写法是10-0.01x5有人会问为什么是5,已经把第一个人排除剩下五个最惨的结局都是0.01。基本你掌握这个思路就好写代码了看看如下:

#!/usr/bin/env python
# -*-coding:utf-8 -*-
 
import random
 
dic={}
lis = ['KeLan','Monkey','Dexter','Superman','Iron Man','Robin']
 
def redpacket(cash,person,index):
  if cash>0 and person !=1:
    n = round(random.uniform(0.01,cash-(0.01*person)),2)
    dic[lis[index]] = n
    print str(n).ljust(4,"0")
    person-=1
    cash-=n
    index+=1
    redpacket(cash,person,index)
  else:
    dic[lis[index]]=round(cash,2)
    print str(cash).ljust(4,"0")
 
redpacket(10,len(lis),0)
print dic
print "手气最佳:",max(dic.items(),key=lambda x:x[1])

我在这里用的是递减的方式来递归剩余的钱数与人数,加了个判断防止无限递归。只要钱cash大于0并且person剩余人数不是1那么继续往下走:n是随机浮点数,范围是从最小的0.01到当前的金额,round是取小数点后保留2位,这字典用来存放相应的人抢了多少红包金额,然后人数自减少1,金额自减当前抢走的金额index是从人名中顺序取值(当然实际不会按找顺序抢,这里只是掩饰介绍过程),然后递归调用自己把剩余的钱cash,剩余人数person,新位置的人重新传参,如果剩下最后一个人(测试了50次,没有发现金额小于0的情况所以这里只表述人)那么剩下的钱就都是他的并且添加到字典,打印输出,由于else内没调用自身递归自然结束最后打印字典的包含了人与抢红包金额对应,最后要答应手气最佳的人用max从列表中取最大值dic.items()返回以元组形式一一对应的列表[(person人,cash钱)],lambda写的是取每个元素的的1位置来做比较也是就是cash值来做比较,max拿出列表中最大的元组。

以上就是本次介绍的全部知识点内容,感谢大家对三水点靠木的支持。

Python 相关文章推荐
python中使用pyhook实现键盘监控的例子
Jul 18 Python
Python实现的检测web服务器健康状况的小程序
Sep 17 Python
JSON Web Tokens的实现原理
Apr 02 Python
Python爬取当当、京东、亚马逊图书信息代码实例
Dec 09 Python
Python3实现发送QQ邮件功能(附件)
Dec 23 Python
Django数据库类库MySQLdb使用详解
Apr 28 Python
Python API自动化框架总结
Nov 12 Python
jupyter notebook实现显示行号
Apr 13 Python
使用Python内置模块与函数进行不同进制的数的转换
Apr 26 Python
GitHub上值得推荐的8个python 项目
Oct 30 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
Feb 02 Python
python 求两个向量的顺时针夹角操作
Mar 04 Python
Django发送邮件功能实例详解
Sep 02 #Python
python读取Excel表格文件的方法
Sep 02 #Python
python将字典列表导出为Excel文件的方法
Sep 02 #Python
python数据处理之如何选取csv文件中某几行的数据
Sep 02 #Python
Python流程控制 while循环实现解析
Sep 02 #Python
Python中list循环遍历删除数据的正确方法
Sep 02 #Python
python中matplotlib条件背景颜色的实现
Sep 02 #Python
You might like
php下删除字符串中HTML标签的函数
2008/08/27 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
JavaScript插入动态样式实现代码
2012/02/22 Javascript
JS简单实现元素复制示例附图
2013/11/19 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
jQuery实现获取元素索引值index的方法
2016/09/18 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
纯js三维数组实现三级联动效果
2017/02/07 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
2018/08/24 Javascript
Vue快速实现通用表单验证功能
2019/12/05 Javascript
js刷新页面location.reload()用法详解
2019/12/09 Javascript
精读《Vue3.0 Function API》
2020/05/20 Javascript
vue+element实现图片上传及裁剪功能
2020/06/29 Javascript
解决ant Design Search无法输入内容的问题
2020/10/29 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队LGD晋级之路
2018/04/07 DOTA
python实现zencart产品数据导入到magento(python导入数据)
2014/04/03 Python
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
Linux 下 Python 实现按任意键退出的实现方法
2016/09/25 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
详解python3中tkinter知识点
2018/06/21 Python
使用python Telnet远程登录执行程序的方法
2019/01/26 Python
python SVD压缩图像的实现代码
2019/11/05 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
Python装饰器结合递归原理解析
2020/07/02 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
利用CSS3实现炫酷的飞机起飞动画
2016/09/17 HTML / CSS
花园仓库建筑:Garden Buildings Direct
2018/02/16 全球购物
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
公司2015年终工作总结
2015/05/26 职场文书
公共场所卫生管理制度
2015/08/05 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python
详解CSS不受控制的position fixed
2021/05/25 HTML / CSS
Python面向对象编程之类的概念
2021/11/01 Python