python实现微信发红包

微信发红包规则

第一种,单独给某个好友发红包:0 < 金额 <= 200,金额支持两位小数

第二种,群红包,有以下三种类型:

1) 拼手气红包:1 <= 红包个数 <= 当前群聊人数,0 < 总金额 <= 200, 金额支持两位小数

2) 普通红包:1 <= 红包个数 <= 当前群聊人数,0 < 单个金额 <= 200, 金额支持两位小数

3) 专属红包:发给群聊中特定的某个人,0 < 金额 <= 200, 金额支持两位小数

我们要写的是拼手气红包的算法,先来看下业务上的场景,如下图所示:

python实现微信发红包_第1张图片

输入:红包个数N、总金额S

输出:随机生成的N个红包金额值

其中输出需要满足这三个条件:N个红包金额值具备随机性、N个红包金额相加的和=总金额S、金额支持两位小数

我的思路是:

在for循环中使用random函数随机生成一个金额值,将生成的金额值存放到一个列表中,因为每次生成的金额值都必须要小于可用的总金额,所以我们需要在每次随机生成一个金额值后,就用总金额减去已经生成的金额值的和,计算出剩下的金额,所以每次生成的随机数的范围应该满足:0.01 <= 随机金额值 < 总金额-已经生成的金额之和,循环N-1次后,最后一个红包金额值用减法计算

完整代码如下:

python实现微信发红包_第2张图片

运行结果如下:

python实现微信发红包_第3张图片

你可能感兴趣的:(算法,python,算法)