Es scheint, dass nach einer gleichmäßigen Verteilung auf einer Scheibe gesucht wird, die ich als (das Innere) des Einheitskreises betrachten werde. Wir können durch parametrisieren so dass wir und . Wir können eine gleichmäßige Verteilung haben lassen, unabhängig von , und müssen die Verteilung von , die eine gleichmäßige Verteilung auf dem Kreis ergibt. Da Wahrscheinlichkeit Fläche proportional sein muss, haben wir für , dass
und , ergibt(r,θ)0≤r≤10≤θ≤2πθRR0≤a≤b≤1
P(a≤R≤b)∝πb2−πa2
a=0b=1FR(r)=r2. Dann ist die Dichte die Ableitung . Die Gelenkdichte von und dann zu
Dies ist leicht zu simulieren, die Summe zweier unabhängiger Uniformen haben eine dreieckige (und symmetrische) Verteilung, die manchmal als "Zelt" -Verteilung bezeichnet wird. Wir wollen nur den linken Teil des Zeltes, den wir erhalten können, indem wir die Verteilung in einer vertikalen Linie oben (Modus) des Zeltes spiegeln. Die Simulation in R ergibt:
R & thgr ; f ( r , & thgr ; ) = 1fR(r)=2rRθf(r,θ)=12π⋅2r=rπ
Der R-Code für die Simulation lautet:
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)
Beachten Sie, dass dies ein Sonderfall der alten Antwort von @Greg Snow ist, da die Verteilung "linkes Zelt" eine Beta-Verteilung mit den Parametern . Aber der obige Code zum Simulieren ist wahrscheinlich schneller als der allgemeine Code zum Simulieren aus einer Beta (oder wäre es, wenn er in C programmiert wäre).a=2,b=1