我试图从单位磁盘上的均匀分布中生成10,000个点并绘制这些点。
我使用的方法有三个步骤。第一步是生成点x的大小。这一点有cdf F(x)= x ^ 2 min(x)= 0和max(x)= 1.第二步涉及从多元正态分布生成二维向量(我将称之为y),其中mu为零向量和西格玛是2×2单位矩阵 - 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)
答案 0 :(得分:1)
您需要计算y
矩阵中每一行的长度,得到y中所有数字之和的平方根,这只是将多项式缩放一个常数。此外,您需要x
而不是sqrt(u)
- 此代码将每行按其长度和用户u^2
缩放进行标准化,并且看起来很漂亮且均匀:
sqrt(u)
有更好的方法可以在光盘上制作统一的点,除非这只是一种练习方式......