python 生成隨機一維或多維正態分佈
阿新 • • 發佈:2019-02-08
作者:採石工 連結:https://www.zhihu.com/question/39823283/answer/115241445 來源:知乎 著作權歸作者所有,轉載請聯絡作者獲得授權。 # coding=utf-8 import numpy as np from numpy.linalg import cholesky import matplotlib.pyplot as plt sampleNo = 1000; # 一維正態分佈 # 下面三種方式是等效的 mu = 3 sigma = 0.1 np.random.seed(0) s = np.random.normal(mu, sigma, sampleNo ) plt.subplot(141) plt.hist(s, 30, normed=True) np.random.seed(0) s = sigma * np.random.randn(sampleNo ) + mu plt.subplot(142) plt.hist(s, 30, normed=True) np.random.seed(0) s = sigma * np.random.standard_normal(sampleNo ) + mu plt.subplot(143) plt.hist(s, 30, normed=True) # 二維正態分佈 mu = np.array([[1, 5]]) Sigma = np.array([[1, 0.5], [1.5, 3]]) R = cholesky(Sigma) s = np.dot(np.random.randn(sampleNo, 2), R) + mu plt.subplot(144) # 注意繪製的是散點圖,而不是直方圖 plt.plot(s[:,0],s[:,1],'+') plt.show()