目錄
1、random.randint(start,stop)
2、random.randrange(start,stop,step)
3、random.choice(seq)
4、random.random()
5、random.send(n=None)
6、random.getstate() 和random.setstate(state):
7、random.shuffle(seq,random=None):
8、random.sample(population,k):
9、random.uniform(a, b)
首頁 後端開發 Python教學 Python中random模組的分析(附實例)

Python中random模組的分析(附實例)

Nov 23, 2018 pm 04:57 PM
python

本篇文章帶給大家的內容是關於Python中random模組的分析(附實例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

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 1
登入後複製

2、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 95
登入後複製

3、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.9741990956161711
登入後複製

5、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 10
登入後複製

6、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 2
登入後複製

7、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中random模組的分析(附實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

怎麼下載deepseek 小米 怎麼下載deepseek 小米 Feb 19, 2025 pm 05:27 PM

怎麼下載deepseek 小米

模板化的優點和缺點有哪些? 模板化的優點和缺點有哪些? May 08, 2024 pm 03:51 PM

模板化的優點和缺點有哪些?

Google AI 為開發者發佈 Gemini 1.5 Pro 和 Gemma 2 Google AI 為開發者發佈 Gemini 1.5 Pro 和 Gemma 2 Jul 01, 2024 am 07:22 AM

Google AI 為開發者發佈 Gemini 1.5 Pro 和 Gemma 2

只要250美元,Hugging Face技術主管手把手教你微調Llama 3 只要250美元,Hugging Face技術主管手把手教你微調Llama 3 May 06, 2024 pm 03:52 PM

只要250美元,Hugging Face技術主管手把手教你微調Llama 3

分享幾個.NET開源的AI和LLM相關專案框架 分享幾個.NET開源的AI和LLM相關專案框架 May 06, 2024 pm 04:43 PM

分享幾個.NET開源的AI和LLM相關專案框架

golang 函數調試與分析的完整指南 golang 函數調試與分析的完整指南 May 06, 2024 pm 02:00 PM

golang 函數調試與分析的完整指南

deepseek怎麼問他 deepseek怎麼問他 Feb 19, 2025 pm 04:42 PM

deepseek怎麼問他

evaluate函數怎麼保存 evaluate函數怎麼保存 May 07, 2024 am 01:09 AM

evaluate函數怎麼保存

See all articles