網站首頁 編程語言 正文
首先我們需要導入random模塊?
1. random.random(): 返回隨機生成的一個浮點數,范圍在[0,1)之間
import random
print(random.random())
2. random.uniform(a, b): 返回隨機生成的一個浮點數,范圍在[a, b)之間
import random
print(random.uniform(1,5))
3.?random.randint(a,b):生成指定范圍內的整數?
import random
print(random.randint(1,10))
4.?random.randrange([start],stop[,step]):用于從指定范圍內按指定基數遞增的集合中獲取一個隨機數。?
例如random.randrange(10,100,2),結果相當于從 [10,12,14,16...96,98] 序列中獲取一個隨機數。random.randrange (10,100,2) 的結果上與 random.choice(range(10,100,2)) 等效。
import random
print(random.randrange(10,22,3))
5.?random.choice():從指定的序列中獲取一個隨機元素
random.choice()從序列中獲取一個隨機元素,其原型為random.choice(sequence),參數sequence表示一個有序類型。這里說明一下,sequence在Python中不是一種特定的類型,而是泛指序列數據結構。列表,元組,字符串都屬于sequence。
import random
print(random.choice('學習python')) # 從字符串中隨機取一個字符
print(random.choice(['good', 'hello', 'is', 'hi', 'boy'])) # 從list列表中隨機取
print(random.choice(('str', 'tuple', 'list'))) # 從tuple元組中隨機取
6.?random.shuffle(x[,random]):用于將一個列表中的元素打亂,隨機排序
import random
p=['hehe','xixi','heihei','haha','zhizhi','lala','momo..da']
random.shuffle(p)
print(p)
x = [1, 2, 3, 4, 5]
random.shuffle(x)
print(x)
7.?random.sample(sequence,k):用于從指定序列中隨機獲取指定長度的片段,sample()函數不會修改原有序列。
import random
list1=[1,2,3,4,5,6,7,8,9,10]
slice=random.sample(list1,5)
print(slice)
#[8, 3, 5, 9, 10]
print(list1)
#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
x = random.sample(range(0, 10), 5)
print(x, type(x))
#[9, 2, 7, 8, 6] <class 'list'>
Words = "AppleKMedoide"
print(random.sample(Words, 3))
#['p', 'M', 'A']
print(random.sample(Words, 3))
#['d', 'i', 'l']
下面的函數需要調用numpy庫?
8. np.random.rand(d0, d1, …, dn): 返回一個或一組浮點數,范圍在[0, 1)之間
import random
import numpy as np
x = np.random.rand()
y = np.random.rand(4)
print(x,type(x))
#0.09842641570445387 <class 'float'>
print(y,type(y))
#[0.27298291 0.12350038 0.63977128 0.90791234] <class 'numpy.ndarray'>
9. np.random.normal(loc=a, scale=b, size=()): 返回滿足條件為均值=a, 標準差=b的正態分布(高斯分布)的概率密度隨機數
np.random.normal(loc=a, scale=b, size=()) - 返回滿足條件為均值=a, 標準差=b的正態分布(高斯分布)的概率密度隨機數,size默認為None(返回1個隨機數),也可以為int或數組
import random
import numpy as np
x = np.random.normal(10,0.2,2)
print(x,type(x))
#[9.78391585 9.83981096] <class 'numpy.ndarray'>
y = np.random.normal(10,0.2)
print(y,type(y))
#9.871187751372984 <class 'float'>
z = np.random.normal(0,0.1,(2,3))
print(z,type(z))
#[[-0.07114831 -0.10258022 -0.12686863]
# [-0.08988384 -0.00647591 0.06990716]] <class 'numpy.ndarray'>
z = np.random.normal(0,0.1,[2,2])
print(z,type(z))
#[[ 0.07178268 -0.00226728]
# [ 0.06585013 -0.04385656]] <class 'numpy.ndarray'>
10 np.random.randn(d0, d1, … dn): 返回標準正態分布(均值=0,標準差=1)的概率密度隨機數
np.random.randn(d0, d1, ... dn): 返回標準正態分布(均值=0,標準差=1)的概率密度隨機數,
import random
import numpy as np
x = np.random.randn()
y = np.random.randn(3)
z = np.random.randn(3, 3)
print(x, type(x))
print(y, type(y))
print(z, type(z))
11. np.random.standard_normal(size=()): 返回標準正態分布(均值=0,標準差=1)的概率密度隨機數
np.random.standard_normal(): 返回標準正態分布(均值=0,標準差=1)的概率密度隨機數, size默認為None(返回1個隨機數),也可以為int或數組
import random
import numpy as np
x = np.random.standard_normal()
y = np.random.standard_normal(size=(3,3))
print(x, type(x))
print(y, type(y))
np.random.rand()與np.random.standard_normal()的方法結果相似,都是返回合符標準正態分布的隨機浮點數或數組。
12. np.random.randint(a, b, size=(), dtype=int): 返回在范圍在[a, b)中的隨機整數(含有重復值)
np.random.randint(a, b, sizie=(), dytpe=int) - size默認為None(返回1個隨機數),也可以為int或數組
import random
import numpy as np
# 從序列[0, 10)之間返回shape=(5,5)的10個隨機整數(包含重復值)
x = np.random.randint(0, 10, size=(5, 5))
# 從序列[15, 20)之間返回1個隨機整數(size默認為None, 則返回1個隨機整數)
y = np.random.randint(15, 20)
print(x, type(x))
print(y, type(y))
13. random.seed(): 設定隨機種子
在設定隨機種子為10之后,random.random()的隨機數將被直接設定為:0.5714025946899135
import random
random.seed(10)
x = random.random()
print(x,type(x))
random.seed(10)
y = random.random()
print(y,type(y))
z = random.random()
print(z,type(z))
random隨機數是這樣生成的:我們將這套復雜的算法(是叫隨機數生成器吧)看成一個黑盒,把我們準備好的種子扔進去,它會返給你兩個東西,一個是你想要的隨機數,另一個是保證能生成下一個隨機數的新的種子,把新的種子放進黑盒,又得到一個新的隨機數和一個新的種子,從此在生成隨機數的路上越走越遠。
我們利用如下代碼進行測試:
import numpy as np
if __name__ == '__main__':
i = 0
while i < 6:
if i < 3:
np.random.seed(0)
print(np.random.randn(1, 5))
else:
print(np.random.randn(1, 5))
i += 1
i = 0
while i < 2:
print(np.random.randn(1, 5))
i += 1
print(np.random.randn(2, 5))
np.random.seed(0)
print("###################################")
i = 0
while i < 8:
print(np.random.randn(1,5))
i += 1
通過該實驗我們可以得到以下結論:
- 兩次利用隨機數種子后,即便是跳出循環后,生成隨機數的結果依然是相同的。第一次跳出while循環后,進入第二個while循環,得到的兩個隨機數組確實和加了隨機數種子不一樣。但是,后面的加了隨機數種子的,八次循環中的結果和前面的結果是一樣的。說明,隨機數種子對后面的結果一直有影響。同時,加了隨機數種子以后,后面的隨機數組都是按一定的順序生成的。
- 在同樣的隨機種子后第六次的隨機數生成結果,兩行五列的數組和兩個一行五列的數組結果相同。說明,在生成多行隨機數組時,是由單行隨機數組組合而成的。
- 利用隨機數種子,每次生成的隨機數相同,就是使后面的隨機數按一定的順序生成。當隨機數種子參數為0和1時,生成的隨機數和我上面高亮的結果相同。說明該參數指定了一個隨機數生成的起始位置。每個參數對應一個位置。并且在該參數確定后,其后面的隨機數的生成順序也就確定了。
- 隨機數種子的參數怎么選擇?我認為隨意,這個參數只是確定一下隨機數的起始位置。
本文綜合參考了如下文章整理:?
- python中的random用法
- python random函數
- python常用random隨機函數匯總,用法詳解及函數之間的區別
- 隨機種子的理解
總結
原文鏈接:https://blog.csdn.net/m0_62735081/article/details/124978101
- 上一篇:C++?API功能設計的實現_C 語言
- 下一篇:C++構建函數使用介紹_C 語言
相關推薦
- 2022-02-18 解決 Syntax Error: Error: PostCSS received undefined
- 2023-04-26 Sklearn調優之網格搜索與隨機搜索原理詳細分析_python
- 2023-02-27 python定時任務timeloop庫用法實例詳解_python
- 2024-03-24 k8s 搭建基于session模式的flink集群
- 2023-01-31 Android如何實現一個DocumentProvider示例詳解_Android
- 2022-05-18 opencv?canny邊緣檢測算法詳解_python
- 2023-10-28 C語言中getchar函數詳解看這一篇就夠了(函數功能、使用、返回值)_C 語言
- 2022-07-15 SQL?Server中的排名函數與分析函數詳解_MsSql
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支