El reto
Escriba un programa o función que no tome entrada y genere un vector de longitud en una dirección aleatoria teóricamente uniforme .
Esto es equivalente a un punto aleatorio en la esfera descrita por
resultando en una distribución como tal
Salida
Tres flotadores de una distribución aleatoria teóricamente uniforme para la cual la ecuación mantiene fiel a los límites de precisión.
Observaciones de desafío
- La distribución aleatoria debe ser teóricamente uniforme . Es decir, si el generador de números pseudoaleatorios fuera reemplazado por un RNG verdadero de los números reales , daría como resultado una distribución aleatoria uniforme de puntos en la esfera.
- Generar tres números aleatorios a partir de una distribución uniforme y normalizarlos no es válido: habrá un sesgo hacia las esquinas del espacio tridimensional.
- Del mismo modo, generar dos números aleatorios a partir de una distribución uniforme y usarlos como coordenadas esféricas no es válido: habrá un sesgo hacia los polos de la esfera.
- La uniformidad adecuada se puede lograr mediante algoritmos que incluyen, entre otros:
- Genere tres números aleatorios , y partir de una distribución normal (gaussiana) alrededor de y normalícelos. 0
- Genere tres números aleatorios , y partir de una distribución uniforme en el rango . Calcule la longitud del vector por . Entonces, si , rechaza el vector y genera un nuevo conjunto de números. De lo contrario, si , normalice el vector y devuelva el resultado. ( - 1 , 1 ) l = √
- Genere dos números aleatorios y de una distribución uniforme en el rango y conviértalos a coordenadas esféricas de la siguiente manera: para que , y puedan calcularse mediante( 0 , 1 ) θ
- Proporcione en su respuesta una breve descripción del algoritmo que está utilizando.
- Lea más sobre la selección de puntos de esfera en MathWorld .
Ejemplos de salida
[ 0.72422852 -0.58643067 0.36275628]
[-0.79158628 -0.17595886 0.58517488]
[-0.16428481 -0.90804027 0.38532243]
[ 0.61238768 0.75123833 -0.24621596]
[-0.81111161 -0.46269121 0.35779156]
Observaciones generales
- Este es el código de golf , por lo que gana la respuesta con la menor cantidad de bytes en cada idioma.
- Se aplican reglas estándar , reglas de E / S y reglas de escapatoria .
- Incluya un enlace Probar en línea o equivalente para demostrar que su código funciona.
- Motive su respuesta con una explicación de su código.
pi/6 ≈ 0.5236
de producir una salida. Esa es el área de la esfera inscrita en el cubo de área unitaria