Le défi
Écrivez un programme ou une fonction qui ne prend aucune entrée et génère un vecteur de longueur dans une direction aléatoire théoriquement uniforme .
Cela équivaut à un point aléatoire sur la sphère décrit par
résultant en une distribution comme celle-ci
Sortie
Trois flotteurs d'une distribution aléatoire théoriquement uniforme pour laquelle l'équation est fidèle aux limites de précision.
Remarques du challenge
- La distribution aléatoire doit être théoriquement uniforme . Autrement dit, si le générateur de nombres pseudo-aléatoires devait être remplacé par un vrai RNG à partir des nombres réels, il en résulterait une distribution aléatoire uniforme des points sur la sphère.
- Générer trois nombres aléatoires à partir d'une distribution uniforme et les normaliser n'est pas valide: il y aura un biais vers les coins de l'espace tridimensionnel.
- De même, générer deux nombres aléatoires à partir d'une distribution uniforme et les utiliser comme coordonnées sphériques n'est pas valide: il y aura un biais vers les pôles de la sphère.
- Une bonne uniformité peut être obtenue par des algorithmes comprenant, mais sans s'y limiter:
- Générez trois nombres aléatoires , et partir d'une distribution normale (gaussienne) autour de et normalisez-les.
- Générez trois nombres aléatoires , et partir d'une distribution uniforme dans la plage . Calculez la longueur du vecteur par . Ensuite, si, rejetez le vecteur et générez un nouvel ensemble de nombres. Sinon, si, normalisez le vecteur et retournez le résultat.
- Générez deux nombres aléatoires et partir d'une distribution uniforme dans la plage et convertissez-les en coordonnées sphériques comme suit: pour que,etpuissent être calculés par
- Fournissez dans votre réponse une brève description de l'algorithme que vous utilisez.
- En savoir plus sur la sélection de points de sphère sur MathWorld .
Exemples de sortie
[ 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]
Remarques générales
- C'est du code-golf , donc la réponse utilisant le moins d'octets dans chaque langue gagne.
- Règles standard , les règles d' E / S et les règles échappatoire applicables.
- Veuillez inclure un lien Essayez-le en ligne ou équivalent pour montrer que votre code fonctionne.
- S'il vous plaît motiver votre réponse avec une explication de votre code.
pi/6 ≈ 0.5236
de produire une sortie. C'est l'aire de la sphère inscrite dans le cube unité-surface