Una muy buena forma de generar variables normales es empezar con los pares de variables uniforme
y aplicar un rechazo al método. Si usted está considerando estas variables normales como entrada
a un rechazo al método, entonces, ¿por qué no empezar con el uniforme de las variables, de modo que sólo han
para hacer un nivel de rechazo?
Se podría generar un punto aleatorio distribuido uniformemente en el volumen de la
esfera de radio $R_1$ (con tres uniformes de variables y un rechazo al método)
y, a continuación, mover ese punto más lejos del origen
mediante la aplicación de una transformación de la forma $r' = f(r)$
($r$ el original de la distancia desde el origen, $r'$ la distancia después de mover el punto)
de modo que el resultado es distribuido uniformemente en la cáscara esférica.
La función de transformación $f$ debe satisfacer
$$\int_r^{R_1} t^2 dt = k \int_{f(r)}^{R_1} t^2 dt$$
donde $k = \dfrac{R_1^3}{R_1^3-R_2^3}$
es la relación entre el volumen de la totalidad de la esfera para el volumen de la cáscara esférica.
Puedo obtener la relación
$$(f(r))^3 = \frac 1k r^3 + \frac{k-1}{k} R_1^3
= \frac{R_1^3-R_2^3}{R_1^3} r^3 + R_2^3 $$
mediante el cálculo de ambas integrales y reordenando términos.
Tenga en cuenta que$f(0) = R_2$$f(R_1) = R_1$, como se desee.
Otra forma de escribir esto es
$$\frac{f(r)}{r} = \left(\frac{R_1^3-R_2^3}{R_1^3} + \frac{R_2^3}{r^3} \right)^{\frac13}.$$
Por lo que el procedimiento es generar tres variables uniforme, $U_1$, $U_2$, y $U_3$ (entre el $-R_1$$R_1$),
y calcular el $r = \sqrt{U_1^2 + U_2^2 + U_3^2}.$
Si $r \leq R_1$, el punto deseado dentro de la cáscara esférica es
$$(x,y,z) =
\left(\frac{R_1^3-R_2^3}{R_1^3} + \frac{R_2^3}{r^3} \right)^{\frac13} (U_1, U_2, U_3).$$
Si $r > R_1$ rechaza las tres variables e inténtelo de nuevo.
Usted será capaz de utilizar $\frac\pi6$ de los triples a generar,
que es peor que el $\frac\pi4$ de los pares de variables uniforme
que usted sería capaz de utilizar a la hora de generar pares de variables normales
por el habitual rechazo método, pero mucho mejor que rechazar todo lo que tiene dentro
el shell si la cáscara es delgada.