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è)部分。這一問題的核心其實(shí)就是產(chǎn)生不重復(fù)隨機(jī)數(shù)的問題。首先想到的遞歸的方法,然后才發(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è)開始嘛
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ù)的元素。上面的方法寫了那么多,其實(shí)Python一句話就完成了。
print(resultList)# 打印結(jié)果
結(jié)果:

PS:這里再為大家提供兩款相關(guān)在線工具供大家參考使用:
在線隨機(jī)數(shù)字/字符串生成工具:
http://tools.jb51.net/aideddesign/suijishu
高強(qiáng)度密碼生成器:
http://tools.jb51.net/password/CreateStrongPassword
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python+wxPython實(shí)現(xiàn)將圖片轉(zhuǎn)換為草圖
將照片轉(zhuǎn)換為藝術(shù)風(fēng)格的草圖是一種有趣的方式,可以為您的圖像添加獨(dú)特的效果,本文主要介紹了如何Python和wxPython來(lái)實(shí)現(xiàn)這一目標(biāo),需要的可以參考下2023-08-08
使用Python處理json字符串中的非法雙引號(hào)問題
這篇文章主要介紹了使用Python處理json字符串中的非法雙引號(hào)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
Tensorflow卷積實(shí)現(xiàn)原理+手寫python代碼實(shí)現(xiàn)卷積教程
這篇文章主要介紹了Tensorflow卷積實(shí)現(xiàn)原理+手寫python代碼實(shí)現(xiàn)卷積教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-05-05
構(gòu)建高效的python requests長(zhǎng)連接池詳解
這篇文章主要介紹了構(gòu)建高效的python requests長(zhǎng)連接池詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-05-05
python使用tkinter實(shí)現(xiàn)自定義多參數(shù)對(duì)話框
Tkinter模塊是Python標(biāo)準(zhǔn)庫(kù)中的一部分,用于創(chuàng)建圖形用戶界面(GUI)應(yīng)用程序,它提供了一組工具和組件,用于創(chuàng)建窗口、按鈕、文本框等用戶界面元素,并且可以響應(yīng)用戶的輸入,本文將給大家講講python如何使用tkinter實(shí)現(xiàn)自定義多參數(shù)對(duì)話框2023-08-08
TensorFlow人工智能學(xué)習(xí)張量及高階操作示例詳解
這篇文章主要為大家介紹了TensorFlow人工智能學(xué)習(xí)張量及高階操作的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11

