发红包

需求:制作一个概率想等的发红包的程序
分析:红包总额money,拆分成n个红包
要点:
1.避免小数误差,可以换算成分求解
2.需要总额等于money,需要概率一样,取n-1个点,加上0和money两端,共n+1个点,组成n个线段,每个线段就是每个红包金额
3.返回生成器函数,领一个红包产生一个结果.
代码如下:

#设计共有money,发n个红包
def luckymoney(money,n):
	import random
	money = money*100#元换算成分,避免小数计算的误差
	#随机取9个点
	randlist=list(random.sample(range(1,money),n-1))
	print(randlist)
	randlist.sort()
	#加上最小点0和最大点money
	randlist.append(money)
	randlist.insert(0,0)
	print(randlist)
	#n+1个点之间的n段就是每个红包的金额
	sum=0
	for i in range(n):
		cash=(randlist[i+1]-randlist[i])
		sum += cash
		print("已发红包总额是:%s元" % (sum/100))
		yield cash/100#结果全部从分换回元
num = 1
for cash in luckymoney(200,10):
	print("第{}个红包是:{}元".format(num,cash))
	num += 1

huibif的学习笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值