由均匀分布生成标准正态分布

  统计/机器学习 概率论 概率分布 Python    浏览次数: 552
2

上周一道面试题,给你一个0到1的均匀分布,如何近似地生成一个均值为0,标准差为1的标准正态分布。并且用python实现。

也就是说你只能用numpy.random.uniform()这个函数,然后通过自己的一些算法,得到numpy.random.normal()。


已经挂了,但求思路!

 

有故事的董同学   2017-11-14 23:10



   2个回答 
6

这个面试的考点就是中心极限定理和均匀分布吧。一组随机变量的均值符合正态分布。

np.random.uniform()生成的是(0, 1)之间均匀分布的随机数, 2 * np.random.uniform() - 1生成的是(-1, 1)之间均匀分布的随机数。

一个常识是(a, b)的随机均匀分布变量的方差是(a - b)^2 / 12。含有n个样本的样本均值的方差是(a - b)^2 / 12 / n。

import numpy as np
normal_rv = 30 * np.mean(2 * np.random.uniform(size=300) - 1)

上面得到的normal_rv就是一个标准正态分布随机变量。

具体步骤是先产生300个(-1, 1)随机变量,它们的均值的标准差是1 / 30,要得到标准正态分布,所以最前面要乘以30.


KingBug   2017-12-18 16:18

2

让我来静静地装个X,题目要求是近似的正态,其实完全可以精确的正态。Box–Muller变换就能做到这一点。

假设$i.i.d.~X_1, X_2\sim U(0,1)$,也就是服从(0, 1)均匀分布,那么

$$Z=\sqrt{-2\text{ln}(X_1)}\cos(2\pi X_2)$$

就是服从$N(0,1)$标准正态分布的随机变量。上面那个式子就是Box-Muller变换。


Marvin_THU   2017-12-20 14:08



  相关问题

多个独立同分布的均匀随机变量的最小值的期望是多少?   2回答

为什么p value是服从[0, 1]均匀分布的?   2回答

均匀分布的上限的最大似然估计   1回答

两个独立的正态随机变量的乘积服从什么分布?   1回答

二项分布的正态近似   2回答

python产生服从常用概率分布的随机数   1回答

对于独立正态变量X, Y ~ N(0,1),X+Y和X-Y是否独立?   1回答

用一个骰子生成1到7的随机数?   3回答

一个骰子平均扔多少回才能把六个数字都扔出来至少一次   2回答

[0, 1]内随机抽取n个不重叠闭区间的概率   1回答

柯西分布没有数学期望   1回答

证明马尔可夫不等式   1回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!