Bonjour,
Je cherche comment générer un nombre aléatoire, en C/C++, suivant une loi normale N(mu ,sig)
Merci par avance.
Bonjour,
Je cherche comment générer un nombre aléatoire, en C/C++, suivant une loi normale N(mu ,sig)
Merci par avance.
Tu as l'algo ?Envoyé par mhtrinh
Si oui, code le et poste ton code si tu as un problème.
Sinon : Algorithmes
Je pensais qu'il existait une librairie qui faisait cela ...![]()
Si je me trompe pas l'algo est décrit dans les numerical recipes.
Salut, pour tirer une loi normale (mu,sig), tu dois tirer une variable aléatoire X suivant la loi normale centrée réduite et ensuite tu pose Y=sig*X+mu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 /* RAND is a macro which returns a pseudo-random numbers from a uniform distribution on the interval [0 1] */ #define RAND ((double) rand())/((double) RAND_MAX) /* TWOPI = 2.0*pi */ #define TWOPI 2.0*3.141592653589793238462643383279502884197169399375 /* RANDN is a macro which returns a pseudo-random numbers from a normal distribution with mean zero and standard deviation one. This macro uses Box Muller's algorithm */ #define RANDN sqrt(-2.0*log(RAND))*cos(TWOPI*RAND) double NormalDistribution(double mu,double sigma) { /* This function returns a pseudo-random numbers from a normal distribution with mean equal at mu and standard deviation equal at sigma > 0 */ if(sigma<=0.0) { fprintf(stderr,"Error in file %s line %u function %s : sigma must be > 0\nExit program\n",__FILE__,__LINE__,__FUNCTION__); exit(EXIT_FAILURE); } return (mu+sigma*RANDN); }
En effet, et ces braves gens donnent meme le code source ici, chapitre 7.Envoyé par viddak
Super !! c'est ce que je voulais.
![]()
Merci beaucoup tout le monde !!!!
![]()
![]()
Partager