O desafio
Escreva um programa ou função que não aceite nenhuma entrada e produza um vetor de comprimento em uma direção aleatória teoricamente uniforme .
Isso é equivalente a um ponto aleatório na esfera descrito por
resultando em uma distribuição como essa
Saída
Três flutuadores de uma distribuição aleatória teoricamente uniforme para a qual a equação é verdadeira para os limites de precisão.
Comentários do desafio
- A distribuição aleatória precisa ser teoricamente uniforme . Ou seja, se o gerador de números pseudo-aleatórios fosse substituído por um RNG verdadeiro a partir dos números reais , isso resultaria em uma distribuição aleatória uniforme de pontos na esfera.
- Gerar três números aleatórios a partir de uma distribuição uniforme e normalizá-los é inválido: haverá um viés nos cantos do espaço tridimensional.
- Da mesma forma, gerar dois números aleatórios a partir de uma distribuição uniforme e usá-los como coordenadas esféricas é inválido: haverá um viés em direção aos pólos da esfera.
- A uniformidade adequada pode ser alcançada por algoritmos, incluindo, entre outros:
- Gerar três números aleatórios de , e de um normal de distribuição (Gaussiana) em torno de e normalizar-los.
- Gerar três números aleatórios de , e a partir de uma uniforme distribuição na gama de . Calcule o comprimento do vetor por . Então, se, rejeite o vetor e gere um novo conjunto de números. Caso contrário, se, normalize o vetor e retorne o resultado.
- Gerar dois números aleatórios e de uma uniforme distribuição na gama e convertê-los em coordenadas esféricas assim: para que,epossam ser calculados por
- Forneça na sua resposta uma breve descrição do algoritmo que você está usando.
- Leia mais sobre a escolha de pontos de esfera no MathWorld .
Exemplos de saída
[ 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]
Observações gerais
- Isso é código-golfe , então a resposta usando o menor número de bytes em cada idioma vence.
- Regras padrão , regras de E / S e regras de brecha são aplicadas.
- Inclua um link Experimente online ou equivalente para demonstrar o funcionamento do seu código.
- Motive sua resposta com uma explicação do seu código.
pi/6 ≈ 0.5236
de produzir uma saída. Essa é a área da esfera inscrita no cubo de área unitária