Python編程實(shí)現(xiàn)生成特定范圍內(nèi)不重復(fù)多個(gè)隨機(jī)數(shù)的2種方法
本文實(shí)例講述了Python編程實(shí)現(xiàn)生成特定范圍內(nèi)不重復(fù)多個(gè)隨機(jī)數(shù)的2種方法。分享給大家供大家參考,具體如下:
在近期進(jìn)行的一個(gè)實(shí)驗(yàn)中,需要將數(shù)據(jù)按一定比例隨機(jī)分割為兩個(gè)部分。這一問(wèn)題的核心其實(shí)就是產(chǎn)生不重復(fù)隨機(jī)數(shù)的問(wèn)題。首先想到的遞歸的方法,然后才發(fā)現(xiàn)Python中居然已經(jīng)提供了此方法的函數(shù),可以直接使用。具體代碼如下:
#生成某區(qū)間內(nèi)不重復(fù)的N個(gè)隨機(jī)數(shù)的方法 import random; #1、利用遞歸生成 resultList=[];#用于存放結(jié)果的List A=1; #最小隨機(jī)數(shù) B=10 #最大隨機(jī)數(shù) COUNT=10 #生成隨機(jī)數(shù)的遞歸數(shù)學(xué),參數(shù)counter表示當(dāng)前準(zhǔn)備要生成的第幾個(gè)有效隨機(jī)數(shù) def generateRand(counter): tempInt=random.randint(A,B); # 生成一個(gè)范圍內(nèi)的臨時(shí)隨機(jī)數(shù), if(counter<=COUNT): # 先看隨機(jī)數(shù)的總個(gè)數(shù)是不是夠了,如果不夠 if(tempInt not in resultList): # 再檢查當(dāng)前已經(jīng)生成的臨時(shí)隨機(jī)數(shù)是不是已經(jīng)存在,如果不存在 resultList.append(tempInt); #則將其追加到結(jié)果List中 counter+=1;# 然后將表示有效結(jié)果的個(gè)數(shù)加1. 請(qǐng)注意這里,如果臨時(shí)隨機(jī)數(shù)已經(jīng)存在,則此if不成立,那么將直接執(zhí)行16行,counter不用再加1 generateRand(counter); # 不管上面的if是否成立,都要遞歸。如果上面的臨時(shí)隨機(jī)數(shù)有效,則這里的conter會(huì)加1,如果上面的臨時(shí)隨機(jī)數(shù)已經(jīng)存在了,則需要重新再生成一次隨機(jī)數(shù),counter不能變化 generateRand(1);#調(diào)用遞歸函數(shù),并給當(dāng)前要生成的有效隨機(jī)數(shù)的個(gè)序號(hào)置為1,因?yàn)橐獜牡谝粋€(gè)開(kāi)始嘛 print(resultList)# 打印結(jié)果 #2、利用Python中的randomw.sample()函數(shù)實(shí)現(xiàn) resultList=random.sample(range(A,B+1),COUNT); # sample(x,y)函數(shù)的作用是從序列x中,隨機(jī)選擇y個(gè)不重復(fù)的元素。上面的方法寫(xiě)了那么多,其實(shí)Python一句話(huà)就完成了。 print(resultList)# 打印結(jié)果
結(jié)果:
PS:這里再為大家提供兩款相關(guān)在線(xiàn)工具供大家參考使用:
在線(xiàn)隨機(jī)數(shù)字/字符串生成工具:
http://tools.jb51.net/aideddesign/suijishu
高強(qiáng)度密碼生成器:
http://tools.jb51.net/password/CreateStrongPassword
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門(mén)與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Pandas中DataFrame數(shù)據(jù)刪除詳情
這篇文章主要以介紹的是Pandas中DataFrame的數(shù)據(jù)刪除的相關(guān)資料,主要使用drop、del方式,需要的朋友可以參考下面文章的具體內(nèi)容2021-09-09pytorch中的model=model.to(device)使用說(shuō)明
這篇文章主要介紹了pytorch中的model=model.to(device)使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05Python實(shí)現(xiàn)設(shè)置windows桌面壁紙代碼分享
這篇文章主要介紹了Python實(shí)現(xiàn)設(shè)置windows桌面壁紙,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-03-03利用Python自動(dòng)化識(shí)別與刪除Excel表格空白行和列
在處理Excel數(shù)據(jù)時(shí),經(jīng)常會(huì)遇到含有空白行和空白列的情況,本文將介紹如何利用Python來(lái)自動(dòng)化識(shí)別并刪除Excel文件中的空白行和列,從而確保數(shù)據(jù)集的整潔性,為后續(xù)的數(shù)據(jù)分析工作奠定堅(jiān)實(shí)的基礎(chǔ),需要的朋友可以參考下2024-05-05利用Python程序讀取Excel創(chuàng)建折線(xiàn)圖
這篇文章主要介紹了利用Python程序讀取Excel創(chuàng)建折線(xiàn)圖,文章通過(guò)圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09Jupyter Notebook打開(kāi)任意文件夾操作
這篇文章主要介紹了Jupyter Notebook打開(kāi)任意文件夾操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04Python判斷一個(gè)list中是否包含另一個(gè)list全部元素的方法分析
這篇文章主要介紹了Python判斷一個(gè)list中是否包含另一個(gè)list全部元素的方法,結(jié)合實(shí)例形式對(duì)比分析了Python針對(duì)列表list元素包含關(guān)系的相關(guān)轉(zhuǎn)換、判斷操作技巧,需要的朋友可以參考下2018-12-12使用pytorch時(shí)所遇到的一些問(wèn)題總結(jié)
這篇文章主要介紹了使用pytorch時(shí)所遇到的一些問(wèn)題總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05