Python版微信红包分配算法

发布于 2015-05-08 10:54:23 | 151 次阅读 | 评论: 0 | 来源: 网友投递

Python编程语言Python 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。

微信红包告诉你,学好数学,真的可以多抢红包!!下面就和大家分享一下抢红包的秘籍,简单概括就是:让朋友先上!

红包分配算法代码实现发给大家,祝红包大丰收!

#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 return
if num == 1:
print "第%d个人拿到红包数为:%.2f" %(num, total)
return
i = 1
total_money = total
#rtotal = (total*100 - min*num*100)/100
while( i max = total_money - min*(num- i)
k = int((num-i)/2)
if num -i 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个人拿到红包数为:1.34, 余额为: 18.66

第2个人拿到红包数为:1.06, 余额为: 17.60

第3个人拿到红包数为:1.08, 余额为: 16.52

第4个人拿到红包数为:0.98, 余额为: 15.54

第5个人拿到红包数为:0.88, 余额为: 14.66

第6个人拿到红包数为:0.48, 余额为: 14.18

第7个人拿到红包数为:0.26, 余额为: 13.92

第8个人拿到红包数为:0.90, 余额为: 13.02

第9个人拿到红包数为:0.12, 余额为: 12.90

第10个人拿到红包数为:0.41, 余额为: 12.49

第11个人拿到红包数为:0.43, 余额为: 12.06

第12个人拿到红包数为:0.63, 余额为: 11.43

第13个人拿到红包数为:0.36, 余额为: 11.07

第14个人拿到红包数为:0.25, 余额为: 10.82

第15个人拿到红包数为:1.38, 余额为: 9.44

第16个人拿到红包数为:0.17, 余额为: 9.27

第17个人拿到红包数为:0.79, 余额为: 8.48

第18个人拿到红包数为:0.52, 余额为: 7.96

第19个人拿到红包数为:0.44, 余额为: 7.52

第20个人拿到红包数为:1.15, 余额为: 6.37

第21个人拿到红包数为:0.13, 余额为: 6.24

第22个人拿到红包数为:0.76, 余额为: 5.48

第23个人拿到红包数为:1.32, 余额为: 4.16

第24个人拿到红包数为:0.80, 余额为: 3.36

第25个人拿到红包数为:0.16, 余额为: 3.20

第26个人拿到红包数为:0.27, 余额为: 2.93

第27个人拿到红包数为:1.82, 余额为: 1.11

第28个人拿到红包数为:0.45, 余额为: 0.66

第29个人拿到红包数为:0.27, 余额为: 0.39

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