=num*0.01原理如下,從1~money*100的數的集合中,隨機抽取num-1個數,然后對這些數進行排序,在排序后的集合前后分別插入0和money*100,組成新的集合用新的集合,(后一個數-前一個數)/100得到紅包的大小然后使用紅包的時候,從num個紅包集合中隨機拿一個,既是隨機紅包了defredbags(money,num=10):importrandomchoice=random" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python生成隨機紅包的實例寫法

系統 2058 0

假設紅包金額為money,數量是num,并且紅包金額money>=num*0.01

原理如下,從1~money*100的數的集合中,隨機抽取num-1個數,然后對這些數進行排序,在排序后的集合前后分別插入0和money*100,組成新的集合

用新的集合,(后一個數-前一個數)/100得到紅包的大小

然后使用紅包的時候,從num個紅包集合中隨機拿一個,既是隨機紅包了

            
def redbags(money, num=10):
  import random
  choice = random.sample(range(1, money * 100), num - 1)
  choice.extend([0,money*100])
  choice.sort()
  return [(choice[i + 1] - choice[i]) / 100 for i in range(num)]
          

擴展內容:

進入紅包思路主題

好了前面簡單的介紹玩今天要使用的工具該進入正題說說紅包的思路了,在你發紅包的時候要填寫兩個重要參數就是紅包的金額我命名為cash,人數person,在就要思考重要的一點就是紅包的最大值和最小值,不會有點紅包領到0吧,一般0.01為最小值,為什么會來說還有最大值,你想假如一個10塊的紅包6個人搶第一個能搶了9.99,那么第二個人只有剩下0.01,后面的人沒得強,這不就有問題了。所以最大值應該就是紅包總金額減去最小值乘以人數(10-0.01x6)這樣才保證大家都有得搶當然最貪婪的寫法是10-0.01x5有人會問為什么是5,已經把第一個人排除剩下五個最慘的結局都是0.01。基本你掌握這個思路就好寫代碼了看看如下:

            
#!/usr/bin/env python
# -*-coding:utf-8 -*-
 
import random
 
dic={}
lis = ['KeLan','Monkey','Dexter','Superman','Iron Man','Robin']
 
def redpacket(cash,person,index):
  if cash>0 and person !=1:
    n = round(random.uniform(0.01,cash-(0.01*person)),2)
    dic[lis[index]] = n
    print str(n).ljust(4,"0")
    person-=1
    cash-=n
    index+=1
    redpacket(cash,person,index)
  else:
    dic[lis[index]]=round(cash,2)
    print str(cash).ljust(4,"0")
 
redpacket(10,len(lis),0)
print dic
print "手氣最佳:",max(dic.items(),key=lambda x:x[1])
          

我在這里用的是遞減的方式來遞歸剩余的錢數與人數,加了個判斷防止無限遞歸。只要錢cash大于0并且person剩余人數不是1那么繼續往下走:n是隨機浮點數,范圍是從最小的0.01到當前的金額,round是取小數點后保留2位,這字典用來存放相應的人搶了多少紅包金額,然后人數自減少1,金額自減當前搶走的金額index是從人名中順序取值(當然實際不會按找順序搶,這里只是掩飾介紹過程),然后遞歸調用自己把剩余的錢cash,剩余人數person,新位置的人重新傳參,如果剩下最后一個人(測試了50次,沒有發現金額小于0的情況所以這里只表述人)那么剩下的錢就都是他的并且添加到字典,打印輸出,由于else內沒調用自身遞歸自然結束最后打印字典的包含了人與搶紅包金額對應,最后要答應手氣最佳的人用max從列表中取最大值dic.items()返回以元組形式一一對應的列表[(person人,cash錢)],lambda寫的是取每個元素的的1位置來做比較也是就是cash值來做比較,max拿出列表中最大的元組。

以上就是本次介紹的全部知識點內容,感謝大家對腳本之家的支持。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 色综合视频一区二区观看 | 一本到亚洲网 | 愉拍精品视频在线观看 | 午夜影院免费在线观看 | 久久99欧美| 亚洲免费在线看 | 亚洲人人草 | 欧美japanese孕交 | 国产伦精品一区二区三区在线观看 | 最新国产午夜精品视频不卡 | 免费黄色在线 | 99视频都是精品热在线播放 | 欧美国产日韩在线观看 | 国产3级在线观看 | a毛片免费全部播放完整成 a毛片免费全部在线播放毛 | 91九色露脸 | 极品专区高清在线 | 欧美日韩乱码毛片免费观看 | 四虎最新影院 | 成人短视频在线观看视频 | 久久精品中文字幕久久 | 福利视频在线 | 国产l精品国产亚洲区久久 国产l精品国产亚洲区在线观看 | 97av免费视频 | 国产午夜亚洲精品久久999 | 一级毛片观看 | 欧美精品一级毛片 | 四虎影视国产884a精品亚洲 | 91国自产精品中文字幕亚洲 | 看欧美毛片一级毛片 | 99爱视频在线观看免费播放 | 欧美精品免费在线观看 | 99在线热播 | 五月天丁香婷婷综合久久 | 国产高清免费 | 久久精品免费在线观看 | 久久资源在线 | 国产成人18黄禁网站免费观看 | 久热中文 | 久久99精品热在线观看15 | 久久婷婷综合在线视频观看6 |