gpt4 book ai didi

java - 如何在编程语言中生成一些长度固定为 r 的同分布伪随机 vector ?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:44:46 25 4
gpt4 key购买 nike

例如,对于维度 d=2 ,这意味着我们可以生成一个随机角度 0<=a<2*pi , 然后我们就可以使用

(x_1,x_2)=(r*cos(a),r*sin(a))作为随机 vector 。

但是,对于维度 d>=3 ,我们不能只生成一个角度并用它来表示 vector 。那么我们如何生成这样一个 vector (x_1,...,x_d) , 在 x_1^2+x_2^2+...+x_d^2=r^2 上同分布?


我刚刚想出了一个新想法,我们可以生成一个 vector (x_1,...,x_d)这样 -r<=x_i<r对于所有 i , 如果 x_1^2+x_2^2+...+x_d^2<=r^2 则将其归一化如果 x_1^2+x_2^2+...+x_d^2>r^2 就放弃它.

但是,有一个缺点,即x_1^2+x_2^2+...+x_d^2<=r^2的概率如果 d 会变得很小非常大。有没有更好的解决方案?

最佳答案

生成独立且服从标准正态分布的随机变量(X_1, X_2, ... X_d),然后除以sqrt(X_1^2+...+X_d^2)/r归一化。

独立正态分布的 union 分布是旋转对称的不仅是正确的,它还表征了正态分布。

您可以使用 Box-Muller transform 从均匀随机变量中有效地生成具有标准正态分布的自变量对。 .

关于java - 如何在编程语言中生成一些长度固定为 r 的同分布伪随机 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30566802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com