【问题标题】:Points uniformly distributed on unit disk (2D)点均匀分布在单位圆盘上(2D)
【发布时间】:2017-02-15 20:10:10
【问题描述】:

我正在尝试从单位磁​​盘上的均匀分布中生成 10,000 个点并绘制这些点。

我使用的方法分为三个步骤。第一步是生成点 x 的大小。该点的 cdf F(x) = x^2 min(x) = 0 和 max(x) = 1。第二步涉及从多元正态分布生成一个二维向量(我将其称为 y),其中 mu 为零向量和 sigma 是 2x2 单位矩阵 - MVN(0,I)。最后我将向量 y 归一化为长度为 x。我试图在 R 中编写解决方案,但我认为我的答案不正确。如果我能指出正确的方向,我将不胜感激。

u = runif(10000)
x = u^2
y = mvrnorm(10000, mu=rep(0,2), Sigma=diag(2))
y_norm = (x*y)/sqrt(sum(y^2))
plot(y_norm, asp = 1)

我为 mvrnorm 使用了 MASS 包。我还包括了我最终得到的情节:

【问题讨论】:

    标签: r normal-distribution uniform-distribution


    【解决方案1】:

    您需要计算y 矩阵中每一行的长度,您将得到 y 中所有数字之和的平方根,这只是将多项式缩放一个常数。此外,您需要将x 设置为sqrt(u) 而不是u^2 - 此代码通过其长度和用户sqrt(u) 缩放对每一行进行规范化,它看起来既美观又统一:

    plot(sqrt(u)*y/sqrt(y[,1]^2+y[,2]^2))
    

    有更好的方法在圆盘上制作统​​一的点,除非这只是一种练习……

    【讨论】:

    • 这样做是一种练习,我意识到有更简单的解决方案。我这样做的原因是我最终可以将该技术应用于 n 维。另外,感谢您的回复。
    • 我认为最好提一下它,以防有人来这里寻找在光盘上生成统一点的好方法!
    • 后续问题 - 如果我对 n 维执行此操作,这将是最有效的方法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 2018-04-10
    • 2022-09-30
    • 2010-10-19
    相关资源
    最近更新 更多