8 votes

Générer un double gaussien aléatoire en Objective-C/C

J'essaie de générer un double gaussien aléatoire en Objective-C (de la même manière que random.nextGaussian en Java). Toutefois, rand_gauss() ne semble pas fonctionner. Quelqu'un connaît-il un moyen d'y parvenir ?

10voto

user1118321 Points 10828

Ce lien montre comment le calculer en utilisant la norme random() fonction.

Je dois noter que vous aurez probablement à faire la ranf() qui convertit la sortie de random() de [0,MAX_INT] pour être de [0,1] mais cela ne devrait pas être trop difficile.

Extrait de l'article en question :

La forme polaire de la transformation de Box-Muller est à la fois plus rapide et plus robuste numériquement. Sa description algorithmique est la suivante float x1, x2, w, y1, y2 ;

     do {
             x1 = 2.0 * ranf() - 1.0;
             x2 = 2.0 * ranf() - 1.0;
             w = x1 * x1 + x2 * x2;
     } while ( w >= 1.0 );

     w = sqrt( (-2.0 * ln( w ) ) / w );
     y1 = x1 * w;
     y2 = x2 * w;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X