numpy生成隨機數

若是你想說,我不想知道里面的邏輯和實現方法,只想要python生成隨機數的代碼,請移步本文末尾,最簡單的demo幫你快速獲取實現方法。python

先開始背景故事說明:算法

在數據分析中,數據的獲取是第一步,numpy.random 模塊提供了很是全的自動產生數據API,是學習數據分析的第一步。 數組

整體來講,numpy.random模塊分爲四個部分,對應四種功能: 
1. 簡單隨機數: 產生簡單的隨機數據,能夠是任何維度 
2. 排列:將所給對象隨機排列 
3. 分佈:產生指定分佈的數據,如高斯分佈等 
4. 生成器:種隨機數種子,根據同一種子產生的隨機數是相同的 
如下是詳細內容以及代碼實例:(如下代碼默認已導入numpy:import numpy as np )
app

1. 生成器

電腦產生隨機數須要明白如下幾點: 
(1)隨機數是由隨機種子根據必定的計算方法計算出來的數值。因此,只要計算方法必定,隨機種子必定,那麼產生的隨機數就不會變。 
(2)只要用戶不設置隨機種子,那麼在默認狀況下隨機種子來自系統時鐘(即定時/計數器的值) 
(3)隨機數產生的算法與系統有關,Windows和Linux是不一樣的,也就是說,即使是隨機種子同樣,不一樣系統產生的隨機數也不同。 
numpy.random 設置種子的方法有:dom

函數名稱 函數功能 參數說明
RandomState 定義種子類 RandomState是一個種子類,提供了各類種子方法,最經常使用seed
seed([seed]) 定義全局種子 參數爲整數或者矩陣

代碼示例:函數

np.random.seed(1234) #設置隨機種子爲1234
  • 1

2. 簡單隨機數

函數名稱 函數功能 參數說明
rand(d0, d1, …, dn) 產生均勻分佈的隨機數 dn爲第n維數據的維度
randn(d0, d1, …, dn) 產生標準正態分佈隨機數 dn爲第n維數據的維度
randint(low[, high, size, dtype]) 產生隨機整數 low:最小值;high:最大值;size:數據個數
random_sample([size]) 在[0,1)內產生隨機數 size:隨機數的shape,能夠爲元祖或者列表,[2,3]表示2維隨機數,維度爲(2,3)
random([size]) 同random_sample([size]) 同random_sample([size])
ranf([size]) 同random_sample([size]) 同random_sample([size])
sample([size])) 同random_sample([size]) 同random_sample([size])
choice(a[, size, replace, p]) 從a中隨機選擇指定數據 a:1維數組 size:返回數據形狀
bytes(length) 返回隨機位 length:位的長度

代碼示例學習

(1) np.random.rand(2,3) #產生2行三列均勻分佈隨機數組 Out[7]: array([[ 0.35369993, 0.0086019 , 0.52609906], [ 0.31978928, 0.27069309, 0.21930115]]) (2)In [8]: np.random.randn(3,3) #三行三列正態分佈隨機數據 Out[8]: array([[ 2.29864491, 0.52591291, -0.80812825], [ 0.37035029, -0.07191693, -0.76625886], [-1.264493 , 1.12006474, -0.45698648]]) (3)In [9]: np.random.randint(1,100,[5,5]) #(1,100)之內的5行5列隨機整數 Out[9]: array([[87, 69, 3, 86, 85], [13, 49, 59, 7, 31], [19, 96, 70, 10, 71], [91, 10, 52, 38, 49], [ 8, 21, 55, 96, 34]]) (4)In [10]: np.random.random(10) #(0,1)之內10個隨機浮點數 Out[10]: array([ 0.33846136, 0.06517708, 0.41138166, 0.34638839, 0.41977818, 0.37188863, 0.2508949 , 0.89923638, 0.51341298, 0.71233872]) (5)In [11]: np.random.choice(10) #[0,10)內隨機選擇一個數 Out[11]: 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

3. 分佈

numpy.random模塊提供了產生各類分佈隨機數的API:ui

函數名稱 函數功能 參數說明
beta(a, b[, size]) 貝塔分佈樣本,在 [0, 1]內。  
binomial(n, p[, size]) 二項分佈的樣本。  
chisquare(df[, size]) 卡方分佈樣本。  
dirichlet(alpha[, size]) 狄利克雷分佈樣本。  
exponential([scale, size]) 指數分佈  
f(dfnum, dfden[, size]) F分佈樣本。  
gamma(shape[, scale, size]) 伽馬分佈  
geometric(p[, size]) 幾何分佈  
gumbel([loc, scale, size]) 耿貝爾分佈。  
hypergeometric(ngood, nbad, nsample[, size]) 超幾何分佈樣本。  
laplace([loc, scale, size]) 拉普拉斯或雙指數分佈樣本  
logistic([loc, scale, size]) Logistic分佈樣本  
lognormal([mean, sigma, size]) 對數正態分佈  
logseries(p[, size]) 對數級數分佈。  
multinomial(n, pvals[, size]) 多項分佈  
multivariate_normal(mean, cov[, size]) 多元正態分佈。  
negative_binomial(n, p[, size]) 負二項分佈  
noncentral_chisquare(df, nonc[, size]) 非中心卡方分佈  
noncentral_f(dfnum, dfden, nonc[, size]) 非中心F分佈  
normal([loc, scale, size]) 正態(高斯)分佈  
pareto(a[, size]) 帕累託(Lomax)分佈  
poisson([lam, size]) 泊松分佈  
power(a[, size]) Draws samples in [0, 1] from a power distribution with positive exponent a - 1.  
rayleigh([scale, size]) Rayleigh 分佈  
standard_cauchy([size]) 標準柯西分佈  
standard_exponential([size]) 標準的指數分佈  
standard_gamma(shape[, size]) 標準伽馬分佈  
standard_normal([size]) 標準正態分佈 (mean=0, stdev=1).  
standard_t(df[, size]) Standard Student’s t distribution with df degrees of freedom.  
triangular(left, mode, right[, size]) 三角形分佈  
uniform([low, high, size]) 均勻分佈  
vonmises(mu, kappa[, size]) von Mises分佈  
wald(mean, scale[, size]) 瓦爾德(逆高斯)分佈  
weibull(a[, size]) Weibull 分佈  
zipf(a[, size]) 齊普夫分佈  

代碼示例lua

(1)正態分佈 import numpy as np import matplotlib.pyplot as plt mu = 1 #指望爲1 sigma = 3 #標準差爲3 num = 10000 #個數爲10000 rand_data = np.random.normal(mu, sigma, num) count, bins, ignored = plt.hist(rand_data, 30, normed=True) plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *np.exp( - (bins - mu)**2 / (2 * sigma**2)), linewidth=2, color='r') plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

獲得圖像: 這裏寫圖片描述spa

4. 排列

函數名稱 函數功能 參數說明
shuffle(x) 打亂對象x(多維矩陣按照第一維打亂) 矩陣或者列表
permutation(x) 打亂並返回該對象(多維矩陣按照第一維打亂) 整數或者矩陣

代碼示例

(1)正態分佈 import numpy as np rand_data = np.random.randint(1, 10, (3, 4)) print(rand_data) np.random.shuffle(rand_data) print(rand_data) out: [[4 4 4 8] [5 6 8 2] [1 7 6 6]] [[4 4 4 8] [1 7 6 6] [5 6 8 2]] (按照行打亂了,也就是交換了行)
相關文章
相關標籤/搜索