[Accueil] - [Plan du site] - [Rechercher] - [ C O L R T S P ]  

 
Tirage aléatoire dans une hyper-sphère
 

par nojhan le 7 novembre 2003

Quel est l’algorithme correct pour effectuer un tirage aléatoire suivant une distribution aléatoire uniforme hypersphèrique ? Pas si évident...

La première solution venant à l’esprit consiste a se placer dans un espace en coordonnées polaires et à tirer dans une loi uniforme chaque coordonnées. Dans un espace à N dimensions, on tire ainsi le rayon r et les angles a1...a2...ai...aN. Puis on passe en coordonnées rectangulaires pour avoir les les angles x1...x2...xi...xN.

(PNG)
Distribution obtenue par la mauvaise méthode.

Or, comme on peut le voir sur la figure, la distribution n’est pas franchement uniforme.

La bonne solution consiste à calculer chaque xi de cette façon : xi=(r1/Niai)/sqrt(sum(ai)) (en LATEX :
$x_{i}=\frac{r^{\frac{1}{N}}_i\cdot a_{i}}{\sqrt{{\displaystyle \sum _{j=1}^{N}a_{i}}}}$)

avec ri tiré dans U0,1 et ai tiré dans NO,1.

(PNG)
Distribution obtenue par la bonne méthode.

La répartition des points est ici correcte.

Dans l’archive ci-jointe vous trouverez le code source C++ du programme ainsi qu’un éxécutable pour Linux (cela dit la compilation sous Windows devrait se faire sans aucun problèmes).


Post-scriptum
Merci à Maurice Clerc pour avoir soulevé et résolu le problème. Vous trouverez sur son site web une page avec une implémentation en C du même problème.

Téléchargements


Commentaires

le 4 août 2007 : Tirage aléatoire dans une hyper-sphère
Serait-il possible d’avoir une démonstration ou tout simplement de savoir d’où provient cette formule ?

    Par camramirezle 21 juillet 2014 : Poster un message [NoJhan - Site perso]
    La plupart assures public utilisent foulee ces codes de reduction vont surpayer pour code reduction mon eden, mescodespromo.fr, leurs achats !Inscrivez-vous a notre bulletin informations puis recevez les meilleurs bons a egard de reductions directement sur __votre e-messager autre part barder votre argent Do’orient ceci INSTANT !

Articles populaires

[Accueil] - [Plan du site] - [Rechercher] - [Admin.]       SPIP:Squelette