#红包生成思路
#200 块钱 10个红包
#0-200 的一个轴,随机取9个点,分成10段, 每一段的值表示一个红包的大小
#把输入的 money值 * 100 拿到的数值就是分, 不用再考虑单位是元的时候 保留2位小数
import random
def red_pocket(money,num):
money = money * 100 #把元 换算成分
ret = random.sample(range(1,money),num-1)
#random.sample 要在列表中取值,所以要range一下,range(1,money)1是1分,再随机抽取9个数
ret.sort() # ***没有返回值***
# 对抽取的数进行排列 [3016, 8109, 12859, 13762, 14179, 14329, 15012, 17230, 19200]
#在列表中插入 0 和200, 等会做减法算每一个红包的大小用
ret.insert(0,0)
ret.append(money)
# return ret [0, 2146, 2299, 2303, 5749, 8003, 8968, 14713, 17829, 19375, 20000]
for i in range(len(ret)-1):
gap = (ret[i+1] - ret[i])/100 #算出每一段的差值,再除以100 转换成单位元
yield gap # 分回一个生成器, 在抽红包之前就已经分好了,然后按照抽的顺序弹出红包金额
red_g = red_pocket(200,10)
for i in red_g:
print(i)