2017-07-25 53 views
-1

爲x〜U(A,B) 得到均勻分佈數組:如何轉換python中的統一標準變量?

x_U=uniform(a,b,1000) 

有一個常態分佈:

y~N(μ,σ) 

我想獲得陣列y_N其與之相應相關x_U元件。 如何在python中執行?它在matlab中看起來很容易。 Such as this link explainnation。 如下的代碼是正規轉換爲統一:

from numpy.random import * 
import matplotlib.pyplot as plt 
a = normal(25,5.4,1000) 
hist_N = plt.hist(a,bins=20,normed=True) 
a_cum = np.cumsum(a) 
hist_U = plt.hist(a_cum,bins=20,normed=True) 

a_cum是與a元件

enter image description here enter image description here

生成高校統戰隨機數將被應用到蒙託-Carlo模擬均勻記者。但原始參數是正態分佈,所以需要轉換。我的目的是在編碼過程之上進行反轉。

+0

你是什麼意思「與x_U元素相關聯」? – BrenBarn

+0

我另外顯示一個例子。它會更清晰。@BrenBarn – Cobin

回答

2

如果我按照你的問題的鏈接,它告訴我該怎麼做。我不知道該erfinv做,但是這個代碼似乎隨機均勻陣列轉換爲高斯型陣列:

import matplotlib.pyplot as plt 
    import numpy as np 
    from scipy.special import erfinv 

    X = np.random.uniform(0,1,1000) 
    Gauss = lambda x, mu, sigma: mu + np.sqrt(2)*sigma*erfinv(2*X-1) 
    plt.hist(Gauss(X, 1, 0.2), bins = 20) 
    plt.show() 

高斯是這裏的功能,通過lambda語句,它基本上作品的製作與定義與def一樣的功能相同。我使用的功能是您鏈接中的功能。

我不能發表圖片呢,唯一的鏈接。高斯形狀看起來像 this,並且形狀像this一樣。

+0

是erfinv()反函數嗎?這是原始功能?如果我們知道正態性的反函數,我認爲問題解決了。 – Cobin

+0

我認爲erfinv是erf函數的反函數,就是這個。 https://en.wikipedia.org/wiki/Error_function –