1. 程式人生 > >Python3 隨機生成一組不重複數並按行寫入檔案

Python3 隨機生成一組不重複數並按行寫入檔案

筆主在做一個專案要生成一組隨機有序的整型數字,並按行輸出到文字檔案使用,恰好開始學習Python3,遂決定直接使用Python3解決

思路:與隨機數相關的函式都要使用到random這個系統庫,檢視相關的開發文件發現random庫下面有個sample(seq,n)函式比較符合,能在在一個序列中隨機選擇n個不重複的數,並返回一個list,接下來就是將一個list按行輸出到一個文字檔案中

過程:

1、匯入random庫

import random
2、生成一個自己自己想要的範圍的序列,筆者是需要在1~300000隨機選擇900個數字,遂想使用range()函式生成一個序列,但是在使用的過程就懵逼了,例如range(1,100),返回的不是一個list,直接返回range(),經過查閱開發文件才 發現
python2中的range返回的是一個list,python3中的range返回的是一個迭代值,for i in range(1,10)在python2和python3中均可以使用,但是要生成1-100的列表,就需要用list(range(1,100))。(在不清楚Python2和Python3的一些函式和語法的差別時常因此而走不少彎路,希望和我一樣的初學者在學習Python時要時常注意這一點),於是生成範圍序列:
seq = list(range(1,300000))
3、接著即使用sample()函式生成一個隨機序列:

sample在幫助文件的解釋:random.sample(population,k)

Return a k length list of unique elements chosen from the population sequence or set. Used forrandom sampling without replacement.

a = random.sample(seq,900)

4、然後再對輸出的list排下序(如果有需要的話,否則可以省略這一步):
a.sort()

5、寫入檔案,因為要換行輸出所以輸出前需要對list進行處理加入換行符

R='\n'.join(str(i) for i in a)

6、寫入到檔案
open('test.txt','w').write(R)

總結:

Python作為一門解釋型語言相對自己之前經常使用的C/C++相對要方便,相對簡單的工作直接在bash或者CMD下可直接使用,方便快捷,可以提高工作效率。