【Python】Python生成一個不重複隨機list
阿新 • • 發佈:2018-12-04
在一個範圍內,生成一個固定元素個數的,不重複的隨機list.
錯誤方法
使用for迴圈逐一對生成每個值進行判斷,在有重複值的時候,不會被被新增.在需要生成多個隨機值的時候,容易出現輸出的結果比較少的情況.比如下面需要生成20個隨機值,可是一般輸出的都不到20.
import random
all_num = 100
a_list = [i for i in range(all_num)]
b_list = []
num = 20
for i in range(num):
random_number = random.randint(1,all_num-1)
if random_number not in b_list:
b_list.append(random_number)
print(b_list)
print(len(b_list))
可以符合需求的
import random
all_num = 100
a_list = [i for i in range(all_num)]
num = 20
def make_random():
b_length = 1
b_list = []
while b_length<=num:
random_number = random.randint(1, all_num - 1)
if random_number not in b_list:
b_list.append(random_number)
b_length = len(b_list)+1
return b_list
print(make_random())
print(len(make_random()))
這裡使用的list的元素個數來作為判斷條件,保證了個數.
這裡有一點值得注意的是b_list放在函式裡面比較合適,如果放在函式外面定義,在
print(len(make_random()))
結果會為21,因為函式裡定義b_length=1,函式會再給b_list增加一個元素進去.
可以適當修改解決…
直接呼叫random.sample
all_num = 100
num = 20
result=random.sample(range(1,all_num),num)
print(result)
print(len(result))