random.random() 回傳下一個偽隨機浮點數,範圍 [0.0, 1.0)(包含 0.0,不包含 1.0)。這是 random 模組的核心產生器,其他分佈函數(uniform、normal、expovariate 等)皆建立於此。本文說明語法、回傳值、常見轉換與進階用法。
import random
random.random() # 無參數
import random
print(random.random()) # 如 0.37444887175646646
print(random.random()) # 如 0.9507143064099162
# 產生 10 個
for _ in range(10):
print(random.random())
# [a, b) 均勻分佈
def uniform(a, b):
return a + (b - a) * random.random()
# [a, b] 整數(含兩端)
def randint(a, b):
return a + int(random.random() * (b - a + 1))
# 任意分佈:反變換法(指數分佈為例)
import math
def expovariate(lambd):
return -math.log(random.random()) / lambd
Random 實例,內部有鎖;高併發建議各執行緒建立獨立 Random() 實例。
random.seed(42)
print([random.random() for _ in range(3)]) # 固定序列
# 獨立實例不影響全域狀態
rng = random.Random(123)
print(rng.random())
import secrets
# secrets 使用 OS 熵源 (os.urandom / getrandom)
print(secrets.random()) # Python 3.9+ 新增,等同 random.random() 但安全
# 3.9 前用 secrets.SystemRandom().random()
numpy.random.random 或 np.random.rand。_rnd = random.random 可減少屬性查找。[0.0, 1.0),永不等於 1.0。int(random.random() * n) 產生 0~n-1 整數 → 有微小偏差(浮點數不均勻),請用 random.randrange(n) 或 random.randint(0, n-1)。Random 實例或 thread-local 儲存。random.random() 是 Python 隨機數生態的基石,理解其範圍、精度、種子機制與執行緒安全性,能正確構建各種隨機演算法與模擬系統。