首页 > 技术文章 > 隔板法发红包

huhuxixi 2019-01-16 21:36 原文

# import random
# def red_pocket(money,num):
# 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]
# lst=[]
# for i in range(len(ret)-1):
# gap = (ret[i+1] - ret[i]) #算出每一段的差值,再除以100 转换成单位元
# lst.append(gap)
# return lst
# red_g = red_pocket(100,30)
# print(red_g)

# import random
# def make(mouny,num):
# d=random.sample(range(1,mouny),num-1)#随机生成数字准备插空
# d.sort()
# d.insert(0,0)
# d.append(mouny)
# lst=[]
# for i in range(len(d)-1):计算插完的列表
# gap=d[i+1]-d[i]
# lst.append(gap)
# return lst
# a=make(100,30)
# print(a)
隔板法可以很好地分割
这个方法的关键在于random.simple生成一个列表然后插入0和100然后得到31个数
后面减前面取他的30个间隔

推荐阅读