12 votos

¿Generará este procedimiento puntos aleatorios distribuidos uniformemente dentro de un círculo determinado? ¿Prueba?

Consideremos la tarea de generar puntos aleatorios distribuidos uniformemente dentro de un círculo de un radio determinado $r$ que está centrado en el origen. Supongamos que nos dan un generador de números aleatorios $R$ que genera un número de punto flotante distribuido uniformemente en el rango $[0, 1)$ .

Considere el siguiente procedimiento:

  1. Generar un punto aleatorio $p = (x, y)$ dentro de un cuadrado de lado $2r$ centrado en el origen. Esto se puede conseguir fácilmente:

    a. Uso del generador de números aleatorios $R$ para generar dos números aleatorios $x$ y $y$ , donde $x, y \in [0, 1)$ y, a continuación, transformar $x$ y $y$ a la gama $[0, r)$ (multiplicando cada uno por $r$ ).

    b. Lanzar una moneda justa para decidir si se refleja $p$ alrededor del $x$ -eje.

    c. Lanzar otra moneda justa para decidir si se refleja $p$ alrededor del $y$ -eje.

  2. Ahora, si $p$ cae fuera del círculo dado, se descarta $p$ y generar otro punto. Repita el procedimiento hasta que $p$ está dentro del círculo.

¿Es correcto el procedimiento anterior? Es decir, ¿son los puntos aleatorios generados por él distribuido uniformemente dentro del círculo dado? ¿Cómo se puede [des]demostrar formalmente?


Información de fondo

En realidad, la tarea se encomendó en Ruby Quiz - Puntos aleatorios dentro de un círculo (#234) . Si está interesado, puede compruebe mi solución en el que he implementado el procedimiento descrito anteriormente. Me gustaría saber si el procedimiento es matemáticamente correcto o no, pero no he podido averiguar cómo [des]probarlo formalmente.

Obsérvese que la tarea real consistía en generar puntos aleatorios distribuidos uniformemente dentro de un círculo de un radio determinado y posición pero lo he omitido intencionadamente en la pregunta porque los puntos generados se pueden trasladar fácilmente a sus posiciones correctas en relación con el centro dado.

0 votos

@jacob seguramente quieres decir -pi y +pi o 0 y 2pi? Y eso era exactamente lo que estaba pensando :) Hay que pasar por el aro para hacerlo en coordenadas cartesianas, mientras que es trivial en coordenadas polares.

0 votos

@workmad3 sí, -pi y +pi. Pero lo he borrado ya que mi sugerencia no era uniforme y no he podido averiguar cómo hacerlo.

0 votos

Yo tampoco estaba seguro de cómo conseguir la uniformidad, por eso miraba de sugerir coordinaciones polares en un comentario más que una respuesta completa :)

17voto

Michiel de Mare Puntos 15888

Sí, esto funcionará; se llama muestreo de rechazo .

Aún mejor es generar un punto en coordenadas polares sin embargo: elige entre [0, 2) y r 2 de [0, R 2 ] (es decir, multiplicar R por la raíz cuadrada de un número aleatorio en [0, 1] - sin la raíz cuadrada no es uniforme).

1 votos

+1 por clavar el "muestreo de rechazo". No creo que yo mismo hubiera sido capaz de encontrar el término. Aun así, no consigo averiguar cómo establecer, a partir del procedimiento de muestreo de rechazo, que la distribución uniforme de los puntos generados se desprende de la distribución uniforme del generador de números aleatorios.

2 votos

@Yaser: Todo punto no rechazado tiene trivialmente la misma probabilidad de ser elegido, esa es la definición de uniforme. Lo único que perdemos es la garantía de cuánto tiempo tardará en generarse un número.

0 votos

@BlueRaja-DannyPflughoeft Buena respuesta. Merece +50 de recompensa y un upvote de mi parte. Recompensaré mañana.

3voto

CodingBytes Puntos 102

No digo que tu método sea el más sencillo para obtener puntos de muestra uniformemente distribuidos en el disco $D$ de radio $r>0$ pero es ciertamente correcto.

Dejemos que $Q:=[{-r},r]^2$ y suponga que los puntos generados en el paso 1. de su procedimiento están distribuidos uniformemente en $Q$ . Para cualquier conjunto $A\subset Q$ denotar por $|A|$ el área de $A$ y por $P(A)$ la probabilidad de que un punto de la muestra $p$ se cae en el plató $A$ . Entonces se tiene la conocida fórmula sobre los condicionales de conmutación: $$P(A\,|\,D)={P(A)\>P(D\,|\,A)\over P(D)}\ .$$ Ahora, cuando $A\subset D$ entonces $P(D\,|\,A)=1$ y por suposición $$P(A)={|A|\over|Q|},\quad P(D)={|D|\over|Q|}\ .$$ De ello se desprende que $$P(A\,|\,D)={|A|\over|D|}\qquad\forall \> A\subset D\ ,$$ como debería ser.

0voto

Chris Marasti-Georg Puntos 17023

Voy a utilizar $P(a,b)$ para la probabilidad de x = a, e y = b.

$P(a,b) = P[x = |a|]P[y = |b|] * 1/4$ para cualquier a, b dentro del cuadrado.

Por lo tanto, está eligiendo una coordenada uniformemente dentro del cuadrado.

Ahora el problema se reduce a lo siguiente:

Elige un elemento de manera uniforme en un conjunto A, y luego descarta los que no son B (B es un subconjunto de A). ¿Es lo mismo que elegir un elemento uniformemente en el conjunto $A \cap B = B$ ?

Creo que esto es cierto, no sé si lo siguiente es una prueba formal (no he hecho probabilidad en un tiempo). por favor señale mis errores.

P(B) es el suceso de que se elija un elemento de B. P(A) es el caso de que se elija un elemento de A.

Eligiendo a x uniformemente, tenemos b \in B es P(x=b|B), es obviamente uniforme.

La probabilidad condicional P(B|A) = P(A \cap B)/P(A) = P(B)/P(A) = P(B)

P(A) = 1, lo que elijas está en A.

P(x=b| (B|A)) = P(x=b|B), que es uniforme.

Respuesta a su pregunta: Se distribuye uniformemente.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X