python 练习 五
题目
- 红包发放
- 可设置金额和分发数量
- 用户每次抽奖,显示抽奖结果
说明:
均匀分布的均值是(a+b)/2,a为最小值,b是最大值。
详见:均匀分布(数学概率论中的术语)_360百科
假如 (a+b)/2 = 总金额/人数,a值为0,则b值为(总金额/人数)*2。
代码
from random import *class hb:get_hb_list =[]total=0balance=0num=0min_money = 0.01def setHb(self,total,num):self.total = totalself.num = numdef divideHb(self):len_hb_list = len(self.get_hb_list);if len_hb_list==0:self.balance=self.totalif self.balance==0 or len_hb_list==self.num:return 0if len_hb_list+1==self.num:money = self.balanceelse:use_num = self.num-len_hb_listmax_money = (self.balance/use_num)*2money = uniform(self.min_money,max_money)money = round(money,2);self.balance -= moneyself.get_hb_list.append(money)self.getHblist()return moneydef getHblist(self):print("*********",end="\n")for key,value in enumerate(self.get_hb_list) :print("{}:{:.2f}元".format(key+1,value))print("*********",end="\n\n")
调用
hb = hb()
hb.setHb(10,5)
hb.divideHb()
hb.divideHb()
hb.divideHb()
hb.divideHb()
hb.divideHb()
hb.divideHb()
输出
*********
1:0.38元
******************
1:0.38元
2:4.58元
******************
1:0.38元
2:4.58元
3:1.02元
******************
1:0.38元
2:4.58元
3:1.02元
4:1.67元
******************
1:0.38元
2:4.58元
3:1.02元
4:1.67元
5:2.35元
*********