물론 2 차원 경우에도 작동하는 일반적인 n 차원 답변을 드릴 것입니다. 3 차원에서 디스크의 아날로그는 솔리드 볼 (구)의 부피입니다.
내가 논의 할 두 가지 접근법이 있습니다. 그중 하나는 "precise" 라고 부르며 R에서 그와 함께 완벽한 솔루션을 얻게 될 것입니다. 두 번째는 휴리스틱 (heuristic ) 이라고 하며 아이디어 일 뿐이며 완전한 솔루션은 제공되지 않습니다.
"정확한"솔루션
내 솔루션은 Marsaglia와 Muller의 작품을 합니다 . 기본적으로, 표준으로 정규화 된 가우스 벡터는 d 차원 초구에 균일하게 분포 된 점을 제공합니다.
디1 / d 적절한 분포의 반지름을 얻기 위해 균일 한 난수를 의 . 다음은 2 차원에 대한 R의 전체 코드입니다.이 코드는 여러 차원으로 쉽게 확장 할 수 있습니다.
n <- 1e4
rho <- sqrt(runif(n))
# d - # of dimensions of hyperdisk
d = 2
r = matrix(rnorm(n*d),nrow=n,ncol=d)
x = r/rep(sqrt(rowSums(r^2))/rho,1)
plot(x[,1], x[,2], pch=19, cex=0.6, col="#00000020")
다음은 3D 케이스의 코드 스 니펫, 즉 솔리드 볼입니다.
library(scatterplot3d)
n <- 1e3
# d - # of dimensions of hyperdisk
d=3
rho <- (runif(n))^(1/d)
r = matrix(rnorm(n*d),nrow=n,ncol=d)
x = r/rep(sqrt(rowSums(r^2))/rho,1)
scatterplot3d(x[,1], x[,2], x[,3])
휴리스틱 접근법
V엔( R ) = π엔2Γ ( n2+ 1 )아르 자형엔
아르 자형엔
∑디나는 = 1엑스2나는< R2
1디+ 2√