本文實例講述了Python編程實現生成特定范圍內不重復多個隨機數的2種方法。分享給大家供大家參考,具體如下:
在近期進行的一個實驗中,需要將數據按一定比例隨機分割為兩個部分。這一問題的核心其實就是產生不重復隨機數的問題。首先想到的遞歸的方法,然后才發現Python中居然已經提供了此方法的函數,可以直接使用。具體代碼如下:
#生成某區間內不重復的N個隨機數的方法import random;#1、利用遞歸生成resultList=[];#用于存放結果的ListA=1; #最小隨機數B=10 #最大隨機數COUNT=10#生成隨機數的遞歸數學,參數counter表示當前準備要生成的第幾個有效隨機數def generateRand(counter): tempInt=random.randint(A,B); # 生成一個范圍內的臨時隨機數, if(counter<=COUNT): # 先看隨機數的總個數是不是夠了,如果不夠 if(tempInt not in resultList): # 再檢查當前已經生成的臨時隨機數是不是已經存在,如果不存在 resultList.append(tempInt); #則將其追加到結果List中 counter+=1;# 然后將表示有效結果的個數加1. 請注意這里,如果臨時隨機數已經存在,則此if不成立,那么將直接執行16行,counter不用再加1 generateRand(counter); # 不管上面的if是否成立,都要遞歸。如果上面的臨時隨機數有效,則這里的conter會加1,如果上面的臨時隨機數已經存在了,則需要重新再生成一次隨機數,counter不能變化generateRand(1);#調用遞歸函數,并給當前要生成的有效隨機數的個序號置為1,因為要從第一個開始嘛print(resultList)# 打印結果#2、利用Python中的randomw.sample()函數實現resultList=random.sample(range(A,B+1),COUNT); # sample(x,y)函數的作用是從序列x中,隨機選擇y個不重復的元素。上面的方法寫了那么多,其實Python一句話就完成了。print(resultList)# 打印結果
結果:
PS:這里再為大家提供兩款相關在線工具供大家參考使用:
在線隨機數字/字符串生成工具:
http://tools.jb51.net/aideddesign/suijishu
高強度密碼生成器:
http://tools.jb51.net/password/CreateStrongPassword
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
新聞熱點
疑難解答