Parece que lo que se busca es una distribución uniforme en un disco, que consideraré (el interior de) el círculo unitario. Podemos parametrizar por(r,θ) entonces tenemos 0≤r≤1 y 0≤θ≤2π. Podemos dejarθ tener una distribución uniforme, independiente de R, y debe encontrar la distribución de Reso da una distribución uniforme en el círculo. Como la probabilidad debe ser proporcional al área, tenemos para0≤a≤b≤1 ese
P(a≤R≤b)∝πb2−πa2
y tomando
a=0,
b=1 da
FR(r)=r2. Entonces la densidad es la derivada
fR(r)=2r. La densidad conjunta de
R y
θ entonces se convierte
f(r,θ)=12π⋅2r=rπ
Esto es fácil de simular, la suma de dos uniformes independientes tiene una distribución triangular (y simétrica), a veces descrita como una distribución "carpa". Solo queremos la parte izquierda de la tienda, que podemos obtener reflejando la distribución en una línea vertical en la parte superior (modo) de la tienda. Simulando esto en R da:
El código R para la simulación es:
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)
Tenga en cuenta que este es un caso especial de la antigua respuesta de @Greg Snow, ya que la distribución "carpa izquierda" es una distribución beta con parámetros a=2,b=1. Pero el código anterior para simularlo es probablemente más rápido que el código general para simular desde una versión beta (o lo sería si estuviera programado en C).