抢红包的线段切割算法
把红包总金额想象成一条很长的线段,而每个人抢到的金额,则是这条主线段所拆分出的若干子线段。
def qianghb(M,N):
M=M*100 #扩大100倍,取整
if N>M:
return '无法分配!'
xianduan=[]
s=0
while s<(N-1):
x=random.randint(1,M-1) # 不能低于1,不能高于总额,
if x not in xianduan: #不能重复
xianduan.append(x)
s+=1
xianduan.sort() #排序
xianduan.append(M) #最后一位收底
jg=[]
s=0
for y in range(N): #切线段
jg.append(round((xianduan[y]-s)/100,2))
s=xianduan[y]
return jg
print(qianghb(5,4))