我必须在一个单位磁盘上随机生成 1000 个点,以便均匀分布在该磁盘上。现在,为此,我选择一个半径和角方向,使得半径是一个来自的均匀分布变量,而是一个来自使用以下代码
r <- runif(1000, min=0, max=1)
alpha <- runif(1000, min=0, max=2*pi)
x <- r*cos(alpha)
y <- r*sin(alpha)
plot(x,y, pch=19, col=rgb(0,0,0,0.05), asp=1)
然后我查看我的样本空间,它看起来像这样:
这显然不像磁盘上均匀分布的样本。和之间缺乏独立性而导致它们在计算上是如何联系起来的。
为了解决这个问题,我编写了一个新代码。
rm(list=ls())
r <- runif(32, min=0, max=1)
df_res <- data.frame(matrix(c(-Inf, Inf), byrow = T, nrow = 1))
for (i in 1:32) {
for (j in 1:32) {
alpha <- runif(32, min=0, max=2*pi)
r <- runif(32, min=0, max=1)
df <- data.frame(matrix(c(r[i],alpha[j]), byrow = T, nrow = 1))
df_res <- rbind(df_res,df)
}
}
df_res <- subset(df_res, df_res$X1 != -Inf)
x<- df_res$X1 *cos(df_res$X2)
y <- df_res$X1 *sin(df_res$X2)
plot(x,y, pch=19, col=rgb(0,0,0,0.05), asp=1)
而且,该样本再次看起来在磁盘上分布不均匀
我开始怀疑附近有更深层次的数学问题。有人可以帮我编写代码来创建一个均匀分布在磁盘上的样本空间,或者在我的推理中解释数学谬误吗?