亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

python實現紅包裂變算法

2020-01-04 17:45:36
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了python實現紅包裂變算法的相關資料,需要的朋友可以參考下
 

本文實例介紹了python實現紅包裂變算法,分享給大家供大家參考,具體內容如下

Python語言庫函數
安裝:pip install redpackets
使用:

import redpackets  redpackets.split(total, num, min=0.01)

1、前情提要
過年期間支付寶紅包、微信紅包成了全民焦點,雖然大多數的紅包就一塊八角的樣子,還是搞得大家樂此不疲。作為一名程序猿,自然會想了解下紅包的實現細節,微信目前是沒有公布紅包的實現細節的,所以這里就綜合網上的討論通過 Python 來實現紅包裂變。
2、紅包規則 

紅包領了不少,據觀察紅包主要有以下幾個限制條件: 
所有人都能分到紅包,也就是不會出現紅包數值為 0 的情況
所有人的紅包數值加起來等于支付的金額
紅包波動范圍比較大,約 5%~8% 的紅包數值在平均值的兩倍以上,同時數額 0.01 出現的概率比較高
紅包的數值是隨機的,并且數值的分布近似于正態分布
其中,前兩條是最基本的限制條件,如果要求不是特別高,可以完全只考慮前兩個限制條件即可。
3、裂變方式一 
3.1、簡單實現

def weixin_divide_hongbao(money, n):  divide_table = [random.randint(1, 10000) for x in xrange(0, n)]  sum_ = sum(divide_table)  return [x*money/sum_ for x in divide_table]

3.2、相關問題
如使用該方式,需要自己去添加相關代碼邏輯去處理如下問題
浮點數精度問題
邊界值的處理

4、裂變方式二 
4.1、完整實現

# -*- coding: utf-8 -*-         from decimal import Decimal, InvalidOperation         import random                  def money_val(min, max):  return min if min > max else Decimal(str(random.randint(min, max)))                  def money_random(total, num, min=0.01):  """  :param total=10; # 紅包總額 10 元  :param num=8; # 分成 8 個紅包,支持 8 人隨機領取  :param min=0.01; # 每個人最少能收到 0.01 元  """  money_list = []           try:    total = Decimal(str(total))  except InvalidOperation as e:    return money_list, e.message           try:    if isinstance(num, float) and int(num) != num:      raise ValueError(u'Invalid value for Num: /'{0}/''.format(num))    num = Decimal(str(int(num)))  except ValueError as e:    return money_list, e.message           try:    min = Decimal(str(min))  except InvalidOperation as e:    return money_list, e.message           if total < num * min:    return money_list, u'Invalid value for Total-{0}, Num-{1}, Min-{2}'.format(total, num, min)           for i in xrange(1, num):    safe_total = (total - (num - i) * min) / (num - i) # 隨機安全上限    money = money_val(min * 100, int(safe_total * 100)) / 100    total -= money    money_list.append(money)  money_list.append(total)           random.shuffle(money_list) # 隨機打亂           return money_list, u'Success'                  if __name__ == '__main__':  print money_random(1, 10)  print money_random(0.1, 10)  print money_random(0.11, 10)  print money_random(0.12, 10)

4.2、函數使用
4.2.1、使用 money_random 預先將紅包裂變,存放在 memcache 或者 redis 中

  • total —— 紅包總額
  • num —— 裂變個數
  • min —— 非必須,紅包最小面額,默認 0.01

4.2.2、當用戶搶紅包的時候,直接 pop 出來一個,直到將所有紅包 pop 完
4.3、庫使用說明
因為涉及到浮點運算,所以使用了 Decimal
5、源碼示例
5.1、運行

python algorithm_utils.py

5.2、效果
5.2.1、對于如下幾個示例

if __name__ == '__main__':  print money_random(1, 10)  print  print money_random(0.1, 10)  print  print money_random(0.11, 10)  print  print money_random(0.12, 10)  print

5.2.2、裂變后的紅包列表如下

python實現紅包裂變算法

以上就是本文的全部內容,希望對大家學習python程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲综合最新在线| 国产亚洲视频在线观看| 国产精品第一页在线| 91精品啪在线观看麻豆免费| 美日韩丰满少妇在线观看| 亚洲精品91美女久久久久久久| 国产精品久久久av久久久| 98视频在线噜噜噜国产| 国内精品模特av私拍在线观看| 北条麻妃99精品青青久久| 97精品国产97久久久久久免费| xxav国产精品美女主播| 亚洲日韩第一页| 91禁外国网站| 韩国日本不卡在线| 亚洲xxxxx| 久热精品在线视频| 国产午夜精品全部视频播放| 成人有码在线播放| 日韩二区三区在线| 国产精品久久久久av| 色噜噜狠狠色综合网图区| 亚洲国产美女久久久久| 久久伊人色综合| 国产亚洲欧美另类中文| 国产精品色视频| 日韩欧中文字幕| 亚洲视频免费一区| 国产精品午夜国产小视频| 2019中文字幕全在线观看| 日韩电影在线观看永久视频免费网站| 久青草国产97香蕉在线视频| 中文字幕日韩在线观看| 亚洲成人激情在线观看| 亚洲电影免费观看高清| 中文字幕国产日韩| 日韩美女在线观看一区| 日韩亚洲第一页| 91免费欧美精品| 亚洲一区亚洲二区亚洲三区| 免费99精品国产自在在线| 久久精品国产亚洲精品| 亚洲高清不卡av| 久久精品成人欧美大片| 一级做a爰片久久毛片美女图片| 亚洲国产精久久久久久久| 欧美精品一本久久男人的天堂| 国产精品视频白浆免费视频| 69国产精品成人在线播放| 欧美高清视频在线播放| 欧美激情乱人伦一区| 在线播放日韩欧美| 久久人人爽人人爽人人片av高清| 精品视频偷偷看在线观看| 国产日韩换脸av一区在线观看| 欧美裸身视频免费观看| 亚洲理论在线a中文字幕| 亚洲国产成人精品一区二区| 久久人人爽人人爽人人片av高请| 国产成人精品电影久久久| 亚洲欧美日韩一区在线| 91在线无精精品一区二区| 亚洲精品电影网| 91久久精品美女| 国产精品久久久久久婷婷天堂| 亚洲白虎美女被爆操| 久久99久久99精品中文字幕| 亚洲国产中文字幕久久网| 57pao精品| 97在线观看免费| 欧美精品videos性欧美| 午夜美女久久久久爽久久| 精品香蕉一区二区三区| 欧美又大又硬又粗bbbbb| 日韩精品在线第一页| 成人黄色av免费在线观看| 亚洲亚裔videos黑人hd| 欧美亚洲视频一区二区| 国产精品欧美久久久| 欧美国产第二页| 久久天天躁狠狠躁夜夜爽蜜月| 国产亚洲日本欧美韩国| 日韩精品极品视频| 欧美极品第一页| 久久久久久久久久久国产| 国产精品你懂得| 国产精品99久久久久久人| 丝袜情趣国产精品| www.日韩视频| 国产91精品久久久久久| 98视频在线噜噜噜国产| 国产精选久久久久久| 国产精品久久久久久久久| 国产成人在线一区二区| 1769国内精品视频在线播放| 国产日韩欧美日韩大片| 国模精品视频一区二区| 国产精品igao视频| 亚洲成年人在线| 国产一区二区三区在线免费观看| 亚洲专区在线视频| 一本色道久久88精品综合| 91精品国产成人www| 国产久一一精品| 中文字幕亚洲一区二区三区| 色婷婷亚洲mv天堂mv在影片| 成人午夜一级二级三级| 国产一区二区激情| 国产精品啪视频| 国产精品美女免费视频| 亚洲人在线视频| 亚洲а∨天堂久久精品喷水| 国产日产久久高清欧美一区| 久久综合久中文字幕青草| 国产综合在线观看视频| 欧美激情高清视频| 亚洲欧洲一区二区三区久久| 欧美日韩在线免费观看| 精品久久久一区二区| 欧美在线精品免播放器视频| 777午夜精品福利在线观看| 国产午夜精品麻豆| 国产69精品久久久久久| 欧美成人免费一级人片100| 欧美一区二区影院| 国产精品第2页| 久久伊人精品天天| 毛片精品免费在线观看| 成人免费福利在线| 91产国在线观看动作片喷水| 久久精品91久久久久久再现| 国产精品1区2区在线观看| 青青a在线精品免费观看| 日韩av免费一区| 国产精品99导航| 国产精品狠色婷| 国产精品久久久久久久久影视| 免费成人高清视频| 国产精品丝袜高跟| 欧美精品videos另类日本| 一色桃子一区二区| 91国语精品自产拍在线观看性色| 亚洲国模精品私拍| 日韩在线观看网站| 亚洲激情视频在线播放| 日本精品久久久久久久| 欧美第一黄网免费网站| 亚洲一区二区三区在线视频| 国产精品亚洲精品| 成人黄色在线观看| 国产精品视频久| 亚洲а∨天堂久久精品9966| 欧美成人精品影院| 亚洲图中文字幕| 黄色成人av在线| 国产精品青青在线观看爽香蕉| 久久精品国产视频| 亚洲aⅴ日韩av电影在线观看| 4438全国成人免费| 91美女片黄在线观| 午夜剧场成人观在线视频免费观看| 日韩在线不卡视频| 亚洲男人天堂古典| 国产一区二区三区在线观看网站|