Python 產生 random 隨機不重複的數字 list

本篇 ShengYu 將介紹如何使用 Python 產生 random 隨機亂數不重複的數字 list,在寫 python 程式有時會用到生成隨機不重複的數字 list,接下來介紹怎麼使用 python 的 random 模組來產生 random 隨機不重複的數字 list。

方法

最簡單的方法是生成的新數字存放在一個list裡,之後每生成的新數字去檢查有沒有已經存在list裡。效能不會太好,因為要檢查的list會變長。
另一種方法是產生從 1~n 的一個數字 list,並打亂該 list,然後迭代 list 以獲得您的下一個不重複的隨機數字。

範例1:先建立一個 list, 再打亂該 list

先產生一個數字list,也可以用 range() 來產生數字list,
使用 random 模組裡的 shuffle() 來打亂該 list,
這邊要注意的是原來list的內容會被改變。

python-random-shuffle.py
1
2
3
4
5
6
7
8
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import random

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print("list :", list1)
random.shuffle(list1)
print("result:", list1)

結果如下:

1
2
list  : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result: [4, 5, 8, 3, 7, 1, 2, 6, 10, 9]

範例2:使用內建提供的產生不重複list的函式

random 模組裡已經有提供 sample() 來產生不重複的 list,
sample(aaa-list, k),從 aaa-list 裡回傳長度為 k 的 list

python-random-sample.py
1
2
3
4
5
6
7
8
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import random

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print("list :", list1)
list2 = random.sample(list1, len(list1))
print("result:", list2)

結果如下:

1
2
list  : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result: [10, 3, 2, 1, 5, 4, 7, 6, 8, 9]

官方文件說明
random 的詳細細節請參考這裡

延伸閱讀:Python random.randint 產生隨機數字

以上就是 Python 產生 random 隨機不重複的數字 list 介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

參考
https://blog.csdn.net/weixin_41770169/article/details/83306118
https://www.itread01.com/content/1543983002.html
http://tw.gitbook.net/t/python3/article-71.html

其它相關文章推薦
如果你想學習 Python 相關技術,可以參考看看下面的文章,
Python 新手入門教學懶人包
Python str 字串用法與範例
Python list 串列用法與範例
Python set 集合用法與範例
Python dict 字典用法與範例
Python tuple 元組用法與範例
Python 讀檔,讀取 txt 文字檔
Python 讓程式 sleep 延遲暫停時間
Python 計算程式執行時間
Python 建立多執行緒 thread