android实现微信群红包个数,微信群红包算法

本文介绍了一个春节红包分配算法,通过计算随机振动坡度来确定每个红包的金额,展示了如何使用Python实现并模拟了不同参数下的红包发放情况。

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

今天是春节的最后一天上班,没什么事情,正好群里面的同学再讨论群红包的算法。

特写了个算法。大致思路是找发过的红包,寻找它的随机震动坡度。

下面来看看算法吧:

#coding=gbk

import random

import sys

#print random.randint(0, 99)

#print "====", random.uniform(0, 0.99)

def calRandomValue(min, max, total, num):

print min, max, total, num

total = float(total)

num = int(num)

min = 0.01

if(num < 1):

return

if num == 1:

print "第%d个人拿到红包数为:%.2f" %(num, total)

return

i = 1

total_money = total

#rtotal = (total*100 - min*num*100)/100

while( i < num ):

max = total_money - min*(num- i)

k = int((num-i)/2)

if num -i <= 2:

k = num -i

max = max/k

monney = random.randint(int(min*100), int(max*100))

monney = float(monney)/100

total_money = total_money - monney

print "第%d个人拿到红包数为:%.2f, 余额为: %.2f" %(i, monney, total_money)

i += 1

print "第%d个人拿到红包数为:%.2f, 余额为: %.2f" %(i, total_money, 0.0)

if __name__ == "__main__":

min = sys.argv[1]

max = sys.argv[2]

total = sys.argv[3]

num = sys.argv[4]

calRandomValue(min, max, total, num)

执行:

python 2.py 0.01 10 20 30

0.01 10 20 30

第1个人拿到红包数为:0.42, 余额为: 19.58

第2个人拿到红包数为:0.12, 余额为: 19.46

第3个人拿到红包数为:0.24, 余额为: 19.22

第4个人拿到红包数为:1.10, 余额为: 18.12

第5个人拿到红包数为:1.45, 余额为: 16.67

第6个人拿到红包数为:0.21, 余额为: 16.46

第7个人拿到红包数为:0.34, 余额为: 16.12

第8个人拿到红包数为:0.16, 余额为: 15.96

第9个人拿到红包数为:1.38, 余额为: 14.58

第10个人拿到红包数为:0.86, 余额为: 13.72

第11个人拿到红包数为:1.18, 余额为: 12.54

第12个人拿到红包数为:0.93, 余额为: 11.61

第13个人拿到红包数为:0.70, 余额为: 10.91

第14个人拿到红包数为:0.60, 余额为: 10.31

第15个人拿到红包数为:0.03, 余额为: 10.28

第16个人拿到红包数为:0.61, 余额为: 9.67

第17个人拿到红包数为:1.37, 余额为: 8.30

第18个人拿到红包数为:0.67, 余额为: 7.63

第19个人拿到红包数为:0.28, 余额为: 7.35

第20个人拿到红包数为:0.96, 余额为: 6.39

第21个人拿到红包数为:1.30, 余额为: 5.09

第22个人拿到红包数为:1.08, 余额为: 4.01

第23个人拿到红包数为:1.12, 余额为: 2.89

第24个人拿到红包数为:0.75, 余额为: 2.14

第25个人拿到红包数为:0.64, 余额为: 1.50

第26个人拿到红包数为:0.37, 余额为: 1.13

第27个人拿到红包数为:0.01, 余额为: 1.12

第28个人拿到红包数为:0.26, 余额为: 0.86

第29个人拿到红包数为:0.31, 余额为: 0.55

第30个人拿到红包数为:0.55, 余额为: 0.00

python 2.py 0.01 10 20 2

0.01 10 20 2

第1个人拿到红包数为:1.62, 余额为: 18.38

第2个人拿到红包数为:18.38, 余额为: 0.00

python 2.py 0.01 10 20 3

0.01 10 20 3

第1个人拿到红包数为:4.58, 余额为: 15.42

第2个人拿到红包数为:11.22, 余额为: 4.20

第3个人拿到红包数为:4.20, 余额为: 0.00

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值