微信紅包最近很流行,昨晚更是到了拼人品拼流量拼WiFi的時(shí)刻??!土豪們紛紛在群里派發(fā)“壓碎錢”,害得小編昨天戳了一晚上的手機(jī)都沒有好好看春晚,微博吐槽都看不懂了呢。大家大概一直以為分多分少是隨機(jī)的,然而一個(gè)程序猿同學(xué)告訴我:搶到多少不是命!訣竅是:盯著微信搶第一個(gè)!
紅包分配算法代碼實(shí)現(xiàn)發(fā)給大家,祝紅包大豐收!
#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個(gè)人拿到紅包數(shù)為:%.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個(gè)人拿到紅包數(shù)為:%.2f, 余額為: %.2f' %(i, monney, total_money) i += 1 print '第%d個(gè)人拿到紅包數(shù)為:%.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個(gè)人拿到紅包數(shù)為:1.34, 余額為: 18.66 第2個(gè)人拿到紅包數(shù)為:1.06, 余額為: 17.60 第3個(gè)人拿到紅包數(shù)為:1.08, 余額為: 16.52 第4個(gè)人拿到紅包數(shù)為:0.98, 余額為: 15.54 第5個(gè)人拿到紅包數(shù)為:0.88, 余額為: 14.66 第6個(gè)人拿到紅包數(shù)為:0.48, 余額為: 14.18 第7個(gè)人拿到紅包數(shù)為:0.26, 余額為: 13.92 第8個(gè)人拿到紅包數(shù)為:0.90, 余額為: 13.02 第9個(gè)人拿到紅包數(shù)為:0.12, 余額為: 12.90 第10個(gè)人拿到紅包數(shù)為:0.41, 余額為: 12.49 第11個(gè)人拿到紅包數(shù)為:0.43, 余額為: 12.06 第12個(gè)人拿到紅包數(shù)為:0.63, 余額為: 11.43 第13個(gè)人拿到紅包數(shù)為:0.36, 余額為: 11.07 第14個(gè)人拿到紅包數(shù)為:0.25, 余額為: 10.82 第15個(gè)人拿到紅包數(shù)為:1.38, 余額為: 9.44 第16個(gè)人拿到紅包數(shù)為:0.17, 余額為: 9.27 第17個(gè)人拿到紅包數(shù)為:0.79, 余額為: 8.48 第18個(gè)人拿到紅包數(shù)為:0.52, 余額為: 7.96 第19個(gè)人拿到紅包數(shù)為:0.44, 余額為: 7.52 第20個(gè)人拿到紅包數(shù)為:1.15, 余額為: 6.37 第21個(gè)人拿到紅包數(shù)為:0.13, 余額為: 6.24 第22個(gè)人拿到紅包數(shù)為:0.76, 余額為: 5.48 第23個(gè)人拿到紅包數(shù)為:1.32, 余額為: 4.16 第24個(gè)人拿到紅包數(shù)為:0.80, 余額為: 3.36 第25個(gè)人拿到紅包數(shù)為:0.16, 余額為: 3.20 第26個(gè)人拿到紅包數(shù)為:0.27, 余額為: 2.93 第27個(gè)人拿到紅包數(shù)為:1.82, 余額為: 1.11 第28個(gè)人拿到紅包數(shù)為:0.45, 余額為: 0.66 第29個(gè)人拿到紅包數(shù)為:0.27, 余額為: 0.39 第30個(gè)人拿到紅包數(shù)為:0.39, 余額為: 0.00
|