首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >random() * random()分布是什么样子的?

random() * random()分布是什么样子的?
EN

Stack Overflow用户
提问于 2013-07-09 01:58:17
回答 3查看 473关注 0票数 1

给定一个函数random(),它返回均匀分布在0和1之间的浮点值。

random() * random()函数的分布类型是什么

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-09 02:23:18

代码语言:javascript
复制
# test.py
import numpy as np
import matplotlib.pyplot as plt

N = 10**6
plt.hist(np.random.uniform(size=N) * np.random.uniform(size=N), bins=50, normed=True)
plt.show()

运行python test.py会产生以下结果:

票数 3
EN

Stack Overflow用户

发布于 2013-07-09 02:07:44

类型是Product Distribution,它不再是统一的。

票数 2
EN

Stack Overflow用户

发布于 2013-07-10 05:49:28

变换为y= x*x,x在0 <=x <= 1的范围内具有概率分布函数fx(x) =1,x的累积分布函数为Fx(x) =x。

Y的CDF是Fy(y <= Y) = Fx(sqrt(Y)) = sqrt(Y),0 <= Y <= 1。

现在进行微分,得到相同范围上的fy(y) = 1/(2*sqrt(y))。

编辑:

上面的解决方案假设"random() * random()“对每次绘制都使用相同的值。相反,如果您希望相乘后的值彼此独立,则需要更多的数学运算,但仍然很容易处理。

现在让我们

0 <= x1 <= 1上的y1 = x1*x2,其中fx1(x1) =1,x2也是如此。

假设x1和x2之间独立,则联合PDF是

fx1x2(x1,x2) = fx1(x1)*fx2(x2)。

引入一个额外的变量y2来处理2变量联合PDF的转换。为了获得更好的计算,假设y2 = x2。

所以我们的系统是

g1(x1,x2) = x1*x2

g2(x1,x2) = x2

与更简单的情况一样,我们现在需要通过求解y1和y2来反转函数:

h2(y1,y2) = x2 (= y2)

h1(y1,y2) = y1/x2 = y1/y2

我们需要雅可比矩阵

(pg1/px1)(pg2/px2) - (pg1/px2)(pg2/x1)

其中"p“是偏导数。

所以在我们的例子中

J= ( x2 )(1) - (x1)(0) =x2。

转换公式(来自任何基于微积分的入门概率文本)是

fy1y2(y1,y2) = fx1x2(x1,x2)/J

在我们的例子中,它简化为

范围0 <= y1/y2 <= 1和0 <= y2 <= 1上的1/y2。

最后,为了得到fy1( y1 ),我们对不需要的变量y2上的联合分布进行积分,注意保持在正确的范围y1/y2 <= 1或y1 <= y2中,因为y2 >= 0。

fy1( y1 ) =在范围0 <= y1 <= 1上从y1积分到(1/y2)dy2 = -ln(y1)中的1。

请注意,在这两种情况下,由于分数(0 <= x <= 1)乘以分数是较小的分数,因此乘积的分布是有利于较小值的加权。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17533032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档