康建
分红包的Python算法
2017-12-12 10:43
阅读:4508
标签:Python

import random
total=200
n=15
x=[random.random() for i in range(n)]
e=[int(i/sum(x)*(total-n))+1 for i in x]           #每人留一分,剩余随机分,用四舍五入可能会超过总数
re=total-sum(e)
u=[random.randint(0,n-1) for i in range(re)]     #截断取整剩的零头再随机给各人1分
for i in range(re):            
   e[u[i]]+=1
print(e)

   看了网上一些模拟分红包的算法,总觉得不那么"随机",有的算法是从总钱数中随机取,这样是条件概率,后面的红包会越来越少;为了保证每人都有份,有的算法遇到极端情况,明显不合理;有的算法写的太长,没利用好Python的简捷性。


转载本文请联系原作者获取授权,同时请注明本文来自康建科学网博客。

链接地址:https://wap.sciencenet.cn/blog-797552-1089280.html?mobile=1

收藏

分享到:

当前推荐数:1
推荐人:
推荐到博客首页
网友评论0 条评论
确定删除指定的回复吗?
确定删除本博文吗?