熱線電話:13121318867

登錄
首頁精彩閱讀Python編程實現生成特定范圍內不重復多個隨機數的2種方法
Python編程實現生成特定范圍內不重復多個隨機數的2種方法
2018-08-09
收藏

Python編程實現生成特定范圍內不重復多個隨機數的2種方法

本文實例講述了Python編程實現生成特定范圍內不重復多個隨機數的2種方法。分享給大家供大家參考,具體如下:

在近期進行的一個實驗中,需要將數據按一定比例隨機分割為兩個部分。這一問題的核心其實就是產生不重復隨機數的問題。首先想到的遞歸的方法,然后才發現Python中居然已經提供了此方法的函數,可以直接使用。具體代碼如下:    
#生成某區間內不重復的N個隨機數的方法
import random;
#1、利用遞歸生成
resultList=[];#用于存放結果的List
A=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)# 打印結果

結果:

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢