python红包随机生成(隔板法)

#红包生成思路
#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)
复制代码

猜你喜欢

转载自www.cnblogs.com/ellisonzhang/p/10279155.html
今日推荐