抢红包实现 微信抢红包原理。N人随机分N元 代码很简单: ``` import math import random class RedPackage(object): def __init__(self, remain_size, remain_money): self.remain_size = remain_size self.remain_money = remain_money # 分 def get_rnd_money(self): if not self.remain_size: return 0 if self.remain_size == 1: self.remain_size -= 1 return self.remain_money min_money = 1 max_money = self.remain_money / self.remain_size * 2 money = random.random() * max_money money = math.floor(money) if money < min_money: money = min_money self.remain_size -= 1 self.remain_money -= money return money red_package = RedPackage(10, 50 * 100) result = [] for i in range(15): money = red_package.get_rnd_money() result.append(money) print(result) check_all = 0 for i in result: check_all += i assert check_all == 50*100 ``` 来自 大脸猫 写于 2018-03-21 00:38 -- 更新于2020-10-19 13:06 -- 0 条评论