假设红包金额为money,数量是num,并且红包金额money>=num*0.01
原理如下,从1~money*100的数的集合中,随机抽取num-1个数,然后对这些数进行排序,在排序后的集合前后分别插入0和money*100,组成新的集合
用新的集合,(后一个数-前一个数)/100得到红包的大小
然后使用红包的时候,从num个红包集合中随机拿一个,既是随机红包了
def redbags(money, num=10):
import random
choice = random.sample(range(1, money * 100), num - 1)
choice.extend([0,money*100])
choice.sort()
return [(choice[i + 1] - choice[i]) / 100 for i in range(num)]
扩展内容:
进入红包思路主题
好了前面简单的介绍玩今天要使用的工具该进入正题说说红包的思路了,在你发红包的时候要填写两个重要参数就是红包的金额我命名为cash,人数person,在就要思考重要的一点就是红包的最大值和最小值,不会有点红包领到0吧,一般0.01为最小值,为什么会来说还有最大值,你想假如一个10块的红包6个人抢第一个能抢了9.99,那么第二个人只有剩下0.01,后面的人没得强,这不就有问题了。所以最大值应该就是红包总金额减去最小值乘以人数(10-0.01x6)这样才保证大家都有得抢当然最贪婪的写法是10-0.01x5有人会问为什么是5,已经把第一个人排除剩下五个最惨的结局都是0.01。基本你掌握这个思路就好写代码了看看如下: