本文首發于微信公眾號:"演算法與編程之美",歡迎關注,及時了解更多此系列文章,
引言
random庫讓Python語言有了靈魂,random是python函式中非常實用的函式之一,大部分python初學者都會去了解它,但是對它都不怎么刻意學習,其實random庫很有內涵,有許多非常實用的東西:
(1)random()回傳0<=n<1之間的隨機實數n;
(2)choice(seq)則是從序列seq隨機回傳元素;
(3)getrandbits(n)以長整數形式回傳n個隨機位;
(4)shuffle(seq)對序列seq進行打亂重新排列;
(5)sample(seq,n)從序列seq中隨機回傳n個元素;
(6)randrange(x,y,z)x和y代表隨機范圍,z代表遞增量;
(7)randint(n,m)用于隨機生成一個指定范圍內的整數,范圍在n到m之間;
(8)uniform(n.m)用于隨機生成一個指定范圍內的浮點數,范圍同樣在n到m之間;
問題描述
針對班級要求,30人里面隨機分配4組,每組人數為4人,進行小游戲,
示例:
輸入:people=['小明', '小紅', '小蘭', '小美', '小黃', '小米', '小夢']
輸出:第一組:[ '小明', '小蘭']
第二組:[ '小美', '小米']
解決方案
演算法描述:
面對要求可以知道問題是隨機抽人分組,一看隨機便要運用random庫,再看隨機抽人分組,每組人數固定,那么便可以用sample解決,其次既然是抽人分組那么抽過的人就不會再被抽中,就可以把抽到的人選出來進行洗掉然后進行下一輪的抽人分組,
隨機抽人分組問題Python代碼
| from random import* people=['一號','二號','三號','四號','五號','六號','七號','八號','九號','十號','十一號','十二號','十三號','十四號','十五號','十六號','十七號','十八號','十九號','二十號','二十一號','二十三號','二十三號','二十四號','二十五號','二十六號','二十七號','二十八號','二十九號','三十號'] ans = sample(people,4) key='第一組:{0}'.format(ans) #把隨機元素回傳進key for i in ans: people.pop(people.index(i)) #遍歷ans隨機回傳的元素并在people中進行洗掉 print(key) ans_2 = sample(people,4) key_2='第二組:{0}'.format(ans_2) print(key_2) for j in ans_2: people.pop(people.index(j)) ans_3 = sample(people,4) key_3='第三組:{0}'.format(ans_3) print(key_3) for w in ans_3: people.pop(people.index(w)) ans_4 = sample(people,4) key_4='第四組:{0}'.format(ans_4) print(key_4) |
運行實體:
結語
本篇到此結束,random庫里面的函式豐富多彩,它們可以解決生活中的許多問題,不僅僅局限于隨機抽人分組,還有抽獎小游戲,猜數字小游戲等等都可以運用random庫解決,小撰寫這篇文章的靈感也源于生活,通過對random函式的理解實際解決問題,相信這篇文章能夠解決讀者們的一些疑問,如有問題也歡迎各位讀者評論,留言,期待你的關注,感謝你的支持,
“我知道”答題挑戰
如何運用random函式隨機列印得到1-100的2個正整數?
主編:歐洋
稿件來源:深度學習與文旅應用實驗室(DLETA)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/245807.html
標籤:其他
