摘要:下一篇文章模塊分析第節加密模塊是產生偽隨機數的模塊,隨機種子默認為系統時鐘。核心源碼時間復雜度實例結果下一篇文章模塊分析第節加密模塊
下一篇文章:Python模塊分析:第2節-hashlib加密模塊
random是Python產生偽隨機數的模塊,隨機種子默認為系統時鐘。下面分析模塊中的方法:
1、random.randint(start,stop)這是一個產生整數隨機數的函數,參數start代表最小值,參數stop代表最大值,兩端的數值都可以取到;
函數算法時間復雜度為:O(1)
核心源碼:
return self.randrange(a,b+1) #調用randrange函數來處理
實例:
import random for i in range(20): print(random.randint(0,10),end=" ")
結果:
1 1 7 5 10 1 4 1 0 8 7 7 2 10 6 8 6 0 3 12、random.randrange(start,stop,step)
也是一個隨機整數函數,參數可選
只有一個參數時,默認隨機范圍是0到該參數,前閉后開;
兩個參數時,表示最小值和最大值,前閉后開
三個參數時,表示最小值,最大值和步長,前閉后開
函數算法時間復雜度:O(1)
核心源代碼:
return istart+istep*self._randbelow(n) #調用randbelow函數處理
實例:
import random for i in range(10): print(random.randrange(10),end=" ") #產生0到10(不包括10)的隨機數 print("") for i in range(10): print(random.randrange(5,10),end=" ") #產生5到10(不包括10)的隨機數 print("") for i in range(10): print(random.randrange(5,100,5),end=" ") #產生5到100(不包括100)范圍內的5倍整數的隨機數
結果:
1 1 2 4 4 3 4 6 1 4 6 6 5 7 8 9 6 6 6 5 30 50 20 40 75 85 25 65 80 953、random.choice(seq)
一個隨機選擇函數,seq是一個非空的集合,在集合中隨機選擇了一個元素輸出,元素的類型沒有限制。
核心源代碼:
i=self._randbelow(len(seq)) #由randbelow函數得到隨機地下標 return seq[i]
函數算法時間負責度:O(1)
實例:
import random list3=["mark","帥",18,[183,138]] for j in range(10): print(random.choice(list3),end=" ")
代碼:
mark 帥 [183, 138] 18 mark 18 mark 帥 帥 [183, 138]4、random.random()
這個函數形成從0.0到1.0之間的任意浮點數,左閉右開,沒有參數。
實例:
import random for j in range(5): print(random.random(),end=" ")
運行結果:
0.357486615834809 0.5928029747238529 0.37053940107869987 0.3802224543848519 0.97419909561617115、random.send(n=None)
一個可以對隨機數生成器進行初始化的函數,n代表隨機種子;當n=None時,隨機種子為系統時間,當n為其他的數據,如int,str等時,則以提供的數據作為隨機種子,此時生成的隨機數列固定。
實例:
import random random.seed("mark") for j in range(20):#無論啟動多少次程序,輸出的序列不變 print(random.randint(0,10),end=" ")
結果:
4 1 10 5 6 2 8 5 5 10 7 2 9 6 2 6 0 5 10 106、random.getstate() 和 random.setstate(state):
getstate()函數用來記錄隨機數生成器的狀態,setstate(state)函數用來將生成器恢復到上次記錄的狀態。
實例:
import random tuple1=random.getstate()#記錄生成器的狀態 for i in range(20): print(random.randint(0,10),end=" ") print() random.setstate(tuple1)#傳入參數回復之間的狀態 for i in range(20): print(random.randint(0,10),end=" ")#兩次輸出的結果一致
結果:
5 7 9 9 10 10 2 3 7 1 1 6 1 7 1 1 7 4 2 2 5 7 9 9 10 10 2 3 7 1 1 6 1 7 1 1 7 4 2 27、random.shuffle(seq,random=None):
對傳入的集合進行亂序操作。只能針對可變序列,如字符串、列表,對于元組等不可變序列會報錯,random用來選擇亂序操作的方式,如random=random。
核心源代碼:
for i in reversed(range(1,len(x))): j=randbelow(i+1) x[i],x[j]=x[k],x[i]
函數算法的時間復雜度:O(n)
實例:
import random lists=["mark","帥哥",18,[183,138]] print(lists) random.shuffle(lists,random=None) print(lists)
結果:
["mark", "帥哥", 18, [183, 138]] ["帥哥", 18, "mark", [183, 138]]8、random.sample(population,k):
population參數是一個序列,如列表、元組、集合、字符串等;從集合中隨機抽取k個元素形成新的序列,不會改變原有的序列。
最壞時間復雜度:O(n*n)
實例:
import random lists=["mark","帥哥",18,[183,138]] lists2=random.sample(lists,3) print(lists) print(lists2)
結果:
["mark", "帥哥", 18, [183, 138]] ["mark", [183, 138], "帥哥"]9、random.uniform(a,b)
生成參數a到b之間的浮點數的函數,如果a>b ,則生成b到a之間的浮點數。
核心源碼:
return a+(b-a)*self.random()
時間復雜度:0(1)
實例:
import random for i in range(5): print(random.uniform(10,1))
結果:
2.8826090956524606 1.5211191352548408 3.2397454278562794 4.147879756524251 6.532545391009419
下一篇文章:Python模塊分析:第2節-hashlib加密模塊
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42648.html
摘要:上一篇文章模塊分析第節模塊下一篇文章模塊分析第節模塊模塊是用來對字符串進行加密的模塊,明文與密文是一一對應不變的關系用于注冊登錄時用戶名密碼等加密使用。一函數分析共有種加密算法,分別得到不同的加密密文。 上一篇文章:Python模塊分析:第1節-random模塊下一篇文章:Python模塊分析:第3節-typing模塊 hashlib模塊是用來對字符串進行hash加密的模塊,明文與密...
摘要:代碼實例運行結果跟不用無異上一篇文章模塊分析第節加密模塊下一篇文章模塊分析第節日志模塊 上一篇文章:Python模塊分析:第2節-hashlib加密模塊下一篇文章:Python模塊分析:第4節-logging日志模塊 Python是一門弱類型的語言,很多時候我們可能不清楚函數參數類型或者返回值類型,很有可能導致一些類型沒有指定方法,typing模塊可以很好的解決這個問題。 該模塊加入...
摘要:上一篇文章模塊分析第節模塊一日志記錄的級別優先級,記錄調試的詳細信息,只在調試時開啟優先級,記錄普通的消息,報告錯誤和警告等待。監聽端口號上一篇文章模塊分析第節模塊 上一篇文章:Python模塊分析:第3節-typing模塊 一、日志記錄的級別 debug:優先級10,記錄調試的詳細信息,只在調試時開啟 info:優先級20,記錄普通的消息,報告錯誤和警告等待。 warning:優...
摘要:課程簡介簡明易懂的課程,不僅適用于那些有其它語言基礎的同學,對沒有編程經驗的同學也非常友好。建議遵守以下約定使用個空格來縮進永遠不要混用空格和制表符在函數之間空一行在類之間空兩行字典,列表,元組以及參數列表中,在后添加一個空格。 showImg(https://segmentfault.com/img/bVCldE); 課程簡介:簡明易懂的 Python3 課程,不僅適用于那些有其它語...
摘要:令人遺憾的是,中獎者最終未現身領獎,萬元大獎成為棄獎。經中山市福彩中心查證,這是中國福彩史上金額第二大的棄獎。根據彩票管理條例實施細則的有關規定,這次的萬元棄獎獎金將被納入彩票公益金。獲取的數據可以保存在本地。 showImg(https://segmentfault.com/img/remote/1460000019703271); 目錄0 引言1 環境2 需求分析3 代碼實現4 后...
閱讀 3095·2021-10-13 09:40
閱讀 3945·2021-09-22 15:51
閱讀 1493·2021-09-22 15:48
閱讀 1060·2021-09-06 15:00
閱讀 1790·2019-08-30 15:43
閱讀 2356·2019-08-29 18:35
閱讀 1667·2019-08-29 16:18
閱讀 3612·2019-08-29 12:49