這個問題在這里已經有了答案: 在范圍內生成“n”個唯一亂數 [重復] (4 個回答) 11 小時前關閉。
我正在嘗試創建一個生成 5 個不同亂數串列的代碼。這是我當前的代碼:
import random
rN0 = random.randint(1, 50)
rN1 = random.randint(1, 50)
rN2 = random.randint(1, 50)
rN3 = random.randint(1, 50)
rN4 = random.randint(1, 50)
randomNumber = [rN0, rN1, rN2, rN3, rN4]
但是,有時它會在串列中產生兩個或多個相同的數字。我希望串列中的每個數字每次都是唯一的。請幫忙?
uj5u.com熱心網友回復:
您可以使用random.sample它從給定的n 個亂數中選擇range:
>>> random.sample(range(1, 50), 5)
[4, 41, 16, 40, 25]
uj5u.com熱心網友回復:
這是一個可以做到這一點的函式:
import random
def difRandom(min,max,amount):
li=[]
if amount>max 1-min:
raise Exception("Not enough random numbers to cover amount. \nPlease increase max or decrease min.")
for x in range(0,amount):
r=random.randint(min,max)
while r in li:
r=random.randint(min,max)
li.append(r)
return(li)
所有數字都會不同。
[編輯]
更好的新功能:
def difRandom(min,max,amount):
li=[x for x in range(min,max 1)]
final=[]
if amount>max 1-min:
raise Exception("Not enough random numbers to cover amount. \nPlease increase max or decrease min.")
random.shuffle(li)
for y in range(0,amount):
final.append(li[y])
return(final)
上面的這個功能要快一些,不需要等待random.randint就可以了。
uj5u.com熱心網友回復:
您可以為此使用以下給定的代碼:-
import random
#This code supposes that you need to generate 10 random integers.
randomNumber = random.sample(range(1, 50), 10)
#This function returns a list of random numbers within a given range
#The second parameter tells how many random numbers to generate for the list
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/311460.html
上一篇:如何識別DICOM檔案?C#
下一篇:組合函式
