微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

得到一组三个随机变量服从从 0 到 1 的均匀分布,其中 X1+X2+X3=1

如何解决得到一组三个随机变量服从从 0 到 1 的均匀分布,其中 X1+X2+X3=1

我的方法

N=20
X1 = np.zeros((N,))
X2 = np.zeros((N,))
X3 = np.zeros((N,))
for i in range(N):
    while (X1[i]+X2[i]+X3[i]>1+sys.float_info.epsilon) or (X1[i]+X2[i]+X3[i]<1-sys.float_info.epsilon):
        X1[i]= np.random.random()
        X2[i]= np.random.random()
        X3[i]= np.random.random()

这行不通,因为计算机程序会运行很长时间。有什么聪明的方法吗?

解决方法

您不可能对所有 3 个变量都具有均匀分布。

在任何有效的三元组中,至少有 2/3 的变量必须 = 1/2。

获得总和为 1 的 3 个变量的一种特别好的方法是在单位球面上随机选择一个点,然后使用 x2,y2,z2.

令人惊讶的是,在单位球面上选择一个点非常简单。如果选择均匀分布的高度和均匀分布的经度,则结果将均匀分布在表面上。

如果您以这种方式选择 3 个变量,那么它们的平方根将均匀分布。 70% 的值将是

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。