python 发红包import random用redenv,Python微信发红包编码案例 微信发红包的架构模式 - push博客...
Python手機微信紅包優化算法案例
#!/usr/bin/env python
# coding: utf-8
import random
# m : 紅包個數
# n : 紅包人數
# packet : 本次搶到的金額 , 所有金額以分為計算
def redEnvelope(m,n):
remain = m*100 #剩余金額
nn = n #剩余人數
for i in range(1,n):
if remain == 0 :
print('已經全部發完了')
else :
packet = random.randint(1,int(remain/nn*2))
nn -= 1
remain -= packet
print('第%d位成員紅包的金額為%.2f元 , 余額為%.2f , 剩余%d人未領紅包'%(i,packet/100,remain/100,nn))
print('最后一個成員紅包金額為%.2f元'%(remain/100))
Python啟用方式
redEnvelope(100,4)
運作結果
第1位成員紅包的金額為45.65元?,?賬戶余額為54.35?,?剩余3人未領紅包
第2位成員紅包的金額為16.10元?,?賬戶余額為38.25?,?剩余2人未領紅包
第3位成員紅包的金額為20.98元?,?賬戶余額為17.27?,?剩余1人未領紅包
最后一個成員紅包金額為17.27元
概述:2014年手機微信紅包應用數據庫查詢抵抗全部總流量,2015年應用cache抗總流量。
手機微信的金額何時算?
答:手機微信金額是拆的那時候即時算出去,并不是事先分派的,選用的是純運行內存測算,不用費用預算室內空間儲存。。
采用即時測算金額的考慮到:費用預算必須占儲存,即時高效率很高,費用預算才高效率低。
實用性:為何本來搶到紅包,打開后發覺沒有?
答:2014年的紅包一點開就了解金額,分2次實際操作,先搶到金額,隨后再轉帳。
2015年的紅包的拆和搶是分離出來的,必須點2次,因而會出現搶到紅包了,但打開后告之紅包早已被領完的情況。進到到第一個網頁不意味著搶到,只表達那時候紅包也有。
分派:紅包里的金額咋算?為何出現每個紅包金額相距挺大?
答:任意,信用額度在0.01和剩余均值*2中間。
比如:發100元錢,一共10個紅包,那麼均值是10元錢一個,那麼傳出來的紅包的信用額度在0.01元~20元中間起伏。
當前邊3個紅包一共被領了40元錢時,剩余60元錢,一共7個紅包,那麼這7個紅包的信用額度在:0.01~(60/7*2)=17.14中間。
留意:這兒的優化算法是每被搶一個后,剩余的會再度實行上邊的那樣的優化算法(Tim教師也感覺所述優化算法太繁雜,不知道根據哪些的考慮到)。?那樣算下去,會超出最初的所有金額,因而來到最終面假如不足那么算,那麼會采用以下優化算法:確保剩余客戶能取得最少1一分錢就可以。?假如前邊的人手氣好不太好,那麼后邊的賬戶余額越大,紅包信用額度也就會越多,因而具體幾率一樣的。
紅包的設計方案
答:手機微信從qq錢包獲取金額信息郭萊,轉化成數量/紅包種類/金額放進redis群集里,app端將紅包ID的懇求放進懇求序列中,假如發覺超出紅包的數量,立即回到。依據紅包的裸祭解決取得成功獲得令牌懇求,則由qq錢包開展一致性啟用,根據像BTC一樣,兩側儲存交易明細,買賣后交到第三方服務項目財務審計,假如交易方式中出現不一致就強制性重歸。
發性解決:紅包怎樣測算被搶完?
答:cache會抵御失效懇求,將失效的懇求過慮掉,具體進到到后臺管理的量并不大。cache紀錄紅包數量,原子操作開展數量下降,到0表達被搶空。qq錢包依照20萬筆每秒鐘入帳提前準備,但具體還不上8萬每秒鐘。
通怎樣維持8w每秒鐘的載入?
答:多主sharding,水準拓展設備。
據容積是多少?
答:一個紅包只占一條紀錄,有效期限只能幾日,因而不用過多室內空間。
詢紅包分派,壓力太大不?
答:搶到紅包的總數和紅包都會一條cache紀錄上,沒有很大的查尋工作壓力。
一個紅包一個序列?
答:沒有序列,一個紅包一條信息,信息上帶一個電子計數器字段名。
有木有從信息上證實每一紅包的幾率是否平等?
答:并不是絕對平等,就是說一個簡易的拍腦殼優化算法。
拍腦殼優化算法,是否會出現2個最好?
答:會出現金額一樣的,可是手氣好最好只能一個,先搶到的哪個最好。
每領一個紅包就升級信息么?
答:每搶到一個紅包,就cas升級剩余金額和紅包數量。
紅包怎樣進庫入帳?
數據庫查詢會累積早已領到的數量與金額,插進一條領到紀錄。入帳則是后臺管理多線程實際操作。
總結
以上是生活随笔為你收集整理的python 发红包import random用redenv,Python微信发红包编码案例 微信发红包的架构模式 - push博客...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计有三个窗口的框架结构网页_技术周刊丨
- 下一篇: python建立ip代理池_Python