Parece que o que se procura é uma distribuição uniforme em um disco, que considerarei ser o interior do círculo unitário. Podemos parametrizar por( r , θ ) então nós temos 0 ≤ r ≤ 1 e 0 ≤ θ ≤ 2 π. Nós podemos deixarθ distribuição uniforme, independente de Re deve encontrar a distribuição de Rque fornece uma distribuição uniforme no círculo. Como a probabilidade deve ser proporcional à área, temos por0 ≤ a ≤ b ≤ 1 aquele
P( a ≤ R ≤ b ) ∝ πb2- πuma2
e tomando
a = 0,
b = 1 dá
FR( r ) =r2. Então a densidade é a derivada
fR( r ) = 2 r. A densidade articular de
R e
θ então se torna
f( r , θ ) =12 π⋅ 2 r =rπ
Isso é fácil de simular, a soma de dois uniformes independentes tem uma distribuição triangular (e simétrica), às vezes descrita como uma distribuição de "barraca". Queremos apenas a parte esquerda da barraca, que podemos obter espelhando a distribuição em uma linha vertical no topo (modo) da barraca. Simular isso em R fornece:
O código R para a simulação é:
set.seed(7*11*13)
rleft_tri <- function(n) {
T <- runif(n)+runif(n)
val <- ifelse(T <= 1,T, 2-T)
val
}
rdisk <- function(n) {
val <- cbind( rleft_tri(n), 2*pi*runif(n) )
colnames(val) <- c("R","Theta")
val
}
#
library(plotrix)
par(bg="antiquewhite")
points <- rdisk(10000) plot(c(-1,1),c(-1,1),type="n",axes=FALSE,xlab="",ylab="",xlim=c(-1.1,1.1),ylim=c(-1.1,1.1))
draw.circle(x=c(0,0),y=c(0,0),radius=1,col="aquamarine")
points(with(as.data.frame(points),cbind(R*cos(Theta), R*sin(Theta))),pch=".",col="red",cex=2)
Observe que este é um caso especial da resposta antiga de @Greg Snow, pois a distribuição "esquerda" é uma distribuição beta com parâmetros a = 2 , b = 1. Mas o código acima para simulá-lo é provavelmente mais rápido que o código geral para simular a partir de uma versão beta (ou seria, se programado em C).