方法一:
import random
def split(money, count):
"""
money:金额(元)
count:拆分红包个数
"""
red_packet = []
# 进行单位换算,转化为分,当整数来计算
money = money*100
for i in range(1,count):
red_m = random.randint(1,money-count+i)
# 将单位换回去,转化为元
red_packet.append(round(red_m * 0.01, 3))
money -= red_m
red_packet.append(round(money * 0.01, 3))
return red_packet
red_packet_list = split(0.2,20)
print(red_packet_list)
print(round(sum(red_packet_list),2))
方法二:
import random
def split(money, count):
"""
money:金额(元)
count:拆分红包个数
"""
red_packet = []
# 进行单位换算,转化为分,当整数来计算
money = money*100
for i in range(count-1):
red_m = random.randint(1,int(money/(count)))
# 将单位换回去,转化为元
red_packet.append(round(red_m * 0.01, 3))
money -= red_m
red_packet.append(round(money * 0.01, 3))
return red_packet
方法三:
import random
def split(money, count):
"""
money:金额(元)
count:拆分红包个数
"""
red_packet = []
# 进行单位换算,转化为分,当整数来计算
money = money*100
for i in range(count-1):
red_m = random.randint(1,int(money/2))
# 将单位换回去,转化为元
red_packet.append(round(red_m * 0.01, 3))
money -= red_m
red_packet.append(round(money * 0.01, 3))
return red_packet
总结:方法一二容易出现极端,方法三比较合理。