用python写微信红包脚本_python 实现模拟微信发红包

本文介绍了如何使用Python编写微信红包脚本,包括两种不同的算法:一种基于随机和剩余平均值,另一种采用锯木头思想控制红包额度。两种算法都确保了公平性和随机性,并保证每个参与者至少能获得0.01元。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

红包逻辑制定:

分配:红包里的金额怎么算?为什么出现各个红包金额相差很大?

答:随机,额度在0.01和(剩余平均值x2)之间。

例如:发100块钱,总共10个红包,那么平均值是10块钱一个,那么发出来的红包的额度在0.01元~20元之间波动。

当前面3个红包总共被领了40块钱时,剩下60块钱,总共7个红包,那么这7个红包的额度在:0.01~(60/7*2)=17.14之间。

注意:这里的算法是每被抢一个后,剩下的会再次执行上面的这样的算法

这样算下去,会超过最开始的全部金额,因此到了最后面如果不够这么算,那么会采取如下算法:保证剩余用户能拿到最低1分钱即可。

如果前面的人手气不好,那么后面的余额越多,红包额度也就越多,因此实际概率一样的。

import random

def luck_money(total, num):

tmp=numfor i in range(num-1): #循环num-1次,根据[0.01 ,total/num*2]的规则生成9个红包

hb= round(random.uniform(0.01, total/num*2), 2)

total= total -hbif total <= num*0.01: # 为了保证每个人最少能拿到0.01元,则做一个判断,如果余额不足的情况,上一个红包的金额=余额-(剩余的人数*0.01),余下所有人拿到的都是0.01total= total +hb

num-= 1hb= total - num*0.01

yield round(hb, 2)for j in range(i+1, tmp): #接着上面的循环,yield 0.01

break#循环完后结束上次循环yieldhb

num-= 1

else: #最后一个红包如果余额还有,所有余额给分给最后一个

total= round(total, 2)yieldtotal

g= luc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值