|
发表于 2017-9-9 13:16:38
|
显示全部楼层
本帖最后由 solomonxian 于 2017-9-9 14:34 编辑
用正态分布吧,可能比较符合现实
标准差对应分散程度,按循环次数上取u-3σ>= 0下最大比较好,
但是如果分散一点貌似更好玩,取 u/2, 小数点保留1位好了
有 2.5% 概率出现负数,那就递归再来一遍,钱一定要比人数多大
- import random, math
- def fun(money, people):
- lst = sorted(round(random.gauss(money//people, money//people//2),1) for _ in range(people))
- temp = round(money - math.fsum(lst),1)
-
- num = sorted([(temp,0),(temp+0.1,-1)], key=lambda x :abs(x[0]))[0][1] # 因为精度是0.1
- lst[num] = round(lst[num] + temp, 1)
- random.shuffle(lst)
- return fun(money, people) if sorted(lst)[0]<=0 else lst
复制代码 |
评分
-
查看全部评分
|