隨機數(shù)并不意味著每次都有不同的數(shù)字。隨機意味著無法在邏輯上預測的事物。
計算機在程序上工作,程序是權(quán)威的指令集。因此,這意味著必須有某種算法來生成隨機數(shù)。
如果存在生成隨機數(shù)的程序,則可以預測它,因此它就不是真正的隨機數(shù)。
通過生成算法生成的隨機數(shù)稱為偽隨機數(shù)。
我們可以生成真正的隨機數(shù)嗎?
是的。為了在我們的計算機上生成一個真正的隨機數(shù),我們需要從某個外部來源獲取隨機數(shù)據(jù)。外部來源通常是我們的擊鍵、鼠標移動、網(wǎng)絡(luò)數(shù)據(jù)等。
我們不需要真正的隨機數(shù),除非它與安全性(例如加密密鑰)有關(guān)或應(yīng)用的基礎(chǔ)是隨機性(例如數(shù)字輪盤賭輪)。
在本教程中,我們將使用偽隨機數(shù)。
NumPy 提供了 random 模塊來處理隨機數(shù),以下演示生成一個 0 到 100 之間的隨機整數(shù):
>>> from numpy import random >>> x = random.randint(100) >>> print(x) 56
random 模塊的 rand() 方法返回 0 到 1 之間的隨機浮點數(shù),以下演示生成一個 0 到 100 之間的隨機浮點數(shù):
>>> from numpy import random >>> x = random.rand() >>> print(x) 0.4755747164243269
在 NumPy 中,我們可以使用上例中的兩種方法來創(chuàng)建隨機數(shù)組,randint() 方法接受 size 參數(shù),您可以在其中指定數(shù)組的形狀。
以下演示生成一個 1-D 數(shù)組,其中包含 5 個從 0 到 100 之間的隨機整數(shù):
>>> from numpy import random >>> x=random.randint(100, size=(5)) >>> print(x) [36 14 12 91 36]
生成有 3 行的 2-D 數(shù)組,每行包含 5 個從 0 到 100 之間的隨機整數(shù):
>>> from numpy import random >>> x = random.randint(100, size=(3, 5)) >>> print(x) [[20 64 23 6 66] [74 11 21 61 70] [24 47 22 22 31]]
rand() 方法還允許您指定數(shù)組的形狀。以下演示生成包含 5 個隨機浮點數(shù)的 1-D 數(shù)組:
>>> from numpy import random >>> x = random.rand(5) >>> print(x) [0.63254731 0.0275278 0.83592219 0.41890601 0.84496798]
生成有 3 行的 2-D 數(shù)組,每行包含 5 個隨機數(shù):
>>> from numpy import random >>> x = random.rand(3, 5) >>> print(x) [[0.51798216 0.70541454 0.03600922 0.2279383 0.2184512 ] [0.91734846 0.07877026 0.75949221 0.7876666 0.20983625] [0.25935065 0.37637584 0.7793815 0.65035139 0.66673048]]
方法使您可以基于值數(shù)組生成隨機值。 方法將數(shù)組作為參數(shù),并隨機返回其中一個值。
>>> from numpy import random >>> x = random.choice([3, 5, 7, 9]) >>> print(x) 5
choice() 方法還允許您返回一個值數(shù)組。請?zhí)砑右粋€ size 參數(shù)以指定數(shù)組的形狀。生成由數(shù)組參數(shù)(3、5、7 和 9)中的值組成的二維數(shù)組:
>>> from numpy import random >>> x = random.choice([3, 5, 7, 9], size=(3, 5)) >>> print(x) [[7 9 7 5 9] [3 3 3 7 9] [7 5 9 3 7]]