0

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

我使用的方法分为三个步骤。第一步是生成点 x 的大小。该点的 cdf F(x) = x^2 min(x) = 0 和 max(x) = 1。第二步涉及从 mu 为的多元正态分布生成二维向量(我将其称为 y)零向量和 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)

我将 MASS 包用于 mvrnorm。我还包括了我最终得到的情节:在此处输入图像描述

4

1 回答 1

1

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

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

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

于 2017-02-15T21:38:31.517 回答