【发布时间】:2017-07-25 07:26:16
【问题描述】:
赋值 x~U(a,b) 得到一个均匀分布的数组:
x_U=uniform(a,b,1000)
存在正态分布:
y~N(μ,σ)
我想得到数组y_N,它与x_U 元素相对应。
如何在python中进行?在matlab中看起来很容易。 Such as this link explainnation。
如下代码是Normality转换为Uniform:
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 元素相关的统一通信者
生成unifrom随机数将应用于Monto-Carlo模拟。但原始参数是正态分布。因此需要转换。我的目的是反转上面的编码过程。
【问题讨论】:
-
“与 x_U 元素对应相关”是什么意思?
-
我另外举了一个例子。会更清楚。@BrenBarn
-
我需要明确一点,这不是创建正态分布随机值的正确方法。你得到的是一个很差的近似值,尤其是在分布的尾部。生成正态分布随机值的正确算法的工作方式不同,每个正态分布随机值采用多个均匀分布的随机值。 MATLAB 和 Python 都提供这些函数(请参阅
randn)。
标签: python matlab normal-distribution uniform