我们都知道random模块是一个生成随机数的模块,用它来做抢红包的功能很合适。
抢红包,抢到的金额是随机的,但怎么让每个人抢到的随机金额公平合理呢
比如:我想发一个100元的红包让10个人抢,我可以把这100看成是一个数轴,通过random模块一次随机产生9个数,这样就把这100分成了10段,每段的数就是抢到的钱数。
import random #首先要引入random模块
def hong_bao(money,num): #函数需要两个参数(钱数,人数)
money = money * 100 #抢红包我们是能抢到分的,这里先将钱数*100,下面处理的都是整数比较方便,再最后把钱数/100就好了
hongbao = random.sample(range(1,money),num-1) #因为最少抢到一分,所以在1和money之间随机取num-1个数,得到的是一个列表
hongbao.sort() #将这这个列表从小到大排序
hongbao.insert(0,0) #将0添加到列表的首位
hongbao.append(money) #将money添加到列表的末尾
for i in range(len(hongbao)-1): #循环这个列表(len(hongbao)-1)
yield (hongbao[i+1] - hongbao[i])/100 #把每个钱数存在一个生成器中
ret = hong_bao(100,10)
for i in ret: #这样有一个人抢红包就把钱数给出来
print(i)
# 29.66
# 2.71
# 11.1
# 7.92
# 7.07
# 11.38
# 17.15
# 5.58
# 2.65
# 4.78