在數據分析,數據清洗,數據集處理中,除了使用,咱們熟悉的
numpy.random
模塊來生成隨機數,或者隨機採樣,事實上,python 標準庫也提供了 random 模塊,若是不想,僅僅由於使用隨機數,而單獨導入numpy
時,標準庫提供的random
模塊,不失爲一種,輕量級替代方案,而且二者使用起來幾乎同樣。html
random 是 python 標準庫模塊,隨 python 一塊兒安裝,無需單獨安裝,可直接導入。python
import random
複製代碼
random()
生成一個位於半開放區間 [0, 1) 的浮點數,幾乎全部random
模塊的方法的實現,都依賴於 random()
。git
random.random()
複製代碼
0.9111245252327139
複製代碼
返回隨機整數 N 知足 a <= N <= b。至關於 randrange(a, b+1)。github
random.randint(0, 10)
複製代碼
8
複製代碼
從 range(start, stop, step)
返回一個隨機選擇的元素。 這至關於 choice(range(start, stop, step))
,但實際上並無構建一個 range 對象。微信
random.randrange(0, 10, 2)
複製代碼
2
複製代碼
從非空序列 seq 返回一個隨機元素。 若是 seq 爲空,則引起 IndexError。dom
random.choice([0, 1, 2, 3, 4, 5])
複製代碼
2
複製代碼
從population中選擇替換,返回大小爲 k 的元素列表。 若是 population 爲空,則引起 IndexError。函數
若是指定了 weight 序列,則根據相對權重進行選擇。 或者,若是給出 cum_weights 序列,則根據累積權重(可能使用 itertools.accumulate() 計算)進行選擇。 例如,相對權重[10, 5, 30, 5]
至關於累積權重[10, 15, 45, 50]
。 在內部,相對權重在進行選擇以前會轉換爲累積權重,所以提供累積權重能夠節省工做量。網站
random.choices([0, 1, 2, 3, 4, 5], k=2)
複製代碼
[0, 2]
複製代碼
random.choices([0, 1, 2, 3, 4, 5], cum_weights=[10, 20, 30, 40, 50, 60], k=3)
複製代碼
[4, 4, 4]
複製代碼
將序列 x 隨機打亂位置。spa
可選參數 random 是一個0參數函數,在 [0.0, 1.0) 中返回隨機浮點數;默認狀況下,這是函數 random() 。code
要改變一個不可變的序列並返回一個新的打亂列表,請使用sample(x, k=len(x))
。
a = [0, 1, 2, 3, 4, 5]
random.shuffle(a)
a
複製代碼
[5, 2, 3, 0, 1, 4]
複製代碼
返回從整體序列或集合中選擇的惟一元素的 k 長度列表。 用於無重複的隨機抽樣。
random.sample([1, 2, 3, 4, 5, 6], k=2)
複製代碼
[1, 3]
複製代碼
高斯分佈。 mu 是平均值,sigma 是標準差。
[random.gauss(0, 1) for i in range(10)]
複製代碼
[1.232295558291998,
-0.23589397085653746,
-1.4190307151921895,
0.18999908858301912,
0.780671045104774,
0.041722424850158674,
0.7392269754813698,
1.4612049925568829,
0.09647538110312114,
-0.32525720572670025]
複製代碼
如下爲 python 官方 github 上,random 模塊的部分源碼,幫助瞭解 random 模塊的基本結構,以及本文介紹的實用方法的源碼申明。
random.py:
class Random(_random.Random):
def seed(self, a=None, version=2):
pass
def randrange(self, start, stop=None, step=1, _int=int):
pass
def randint(self, a, b):
pass
def choice(self, seq):
pass
def shuffle(self, x, random=None):
pass
def sample(self, population, k):
pass
def choices(self, population, weights=None, *, cum_weights=None, k=1):
pass
def gauss(self, mu, sigma):
pass
...
_inst = Random()
seed = _inst.seed
random = _inst.random
randrange = _inst.randrange
randint = _inst.randint
choice = _inst.choice
shuffle = _inst.shuffle
sample = _inst.sample
choices = _inst.choices
gauss = _inst.gauss
...
複製代碼
堅持寫專欄不易,若是以爲本文對你有幫助,記得點個贊。感謝支持!
微信掃描二維碼 獲取最新技術原創