Bonjour,
Tout d'abord, je précise que je suis sous python 3.x
Je dois appliquer un nombre aléatoire de la loi normale centrée réduite à une variable.
Cette variable, dans mon script, est telle que :
x=1+2
N(x)
N=loi normale
x=variable
N est une loi normale centrée réduite tel que N(0,1)
Soit :
mu=0
sigma=1
J'ai cherché une fonction toute faite, j'ai trouvé dans un premier temps :
random.gauss(0,1)
Mais ça me dit que le module random ne trouve pas gauss... Pourtant elle existe : http://docs.python.org/3.1/library/random.html
Donc je me suis penché sur deux lib apparemment fonctionnelles : NumPy et SciPy.
http://www.scipy.org/install.html
Sauf que cela ne m'intéresse pas vraiment car je dois les installer sur mon ordinateur, or j'aime bien python pour sa portabilité donc préciser sur mon script de devoir installer une librairie me semble paradoxal.
Donc bon, en gros, je vais devoir me retaper l'algo de la loi normale standard. C'est pas bien grave !
Par souci d'efficacité, je cherche un code déjà fait, et je suis tombé sur un code de Tyrtamos que voici :
Que vous trouverez sur cette page :
http://python.jpvweb.com/mesrecettes...id=loi_normale
Sauf que :
Il a bien mis mu=0 (x==0) mais j'ai l'impression que son sigma=7.56 et non 1 (enfin je crois, si j'ai bien capté son code, sinon d'où sort ce 7.56 ?)
De plus, quand je tente de l'associer à mon code, j'ai une erreur. Je crois que c'est parce que sa fonction pgaussred() requiert un nombre et que moi c'est une variable (mais cette variable est normalement un nombre à ce stade du script ?). En effet, comme j'ai précisé plus haut, ça fait :
x=1+2
pgaussred(x)
#erreur
Par ailleurs j'ai pas vraiment bien saisi tout son code... Il aurait dû (pu) mieux le commenter...
Merci !
Tout d'abord, je précise que je suis sous python 3.x
Je dois appliquer un nombre aléatoire de la loi normale centrée réduite à une variable.
Cette variable, dans mon script, est telle que :
x=1+2
N(x)
N=loi normale
x=variable
N est une loi normale centrée réduite tel que N(0,1)
Soit :
mu=0
sigma=1
J'ai cherché une fonction toute faite, j'ai trouvé dans un premier temps :
random.gauss(0,1)
Mais ça me dit que le module random ne trouve pas gauss... Pourtant elle existe : http://docs.python.org/3.1/library/random.html
Donc je me suis penché sur deux lib apparemment fonctionnelles : NumPy et SciPy.
http://www.scipy.org/install.html
Sauf que cela ne m'intéresse pas vraiment car je dois les installer sur mon ordinateur, or j'aime bien python pour sa portabilité donc préciser sur mon script de devoir installer une librairie me semble paradoxal.
Donc bon, en gros, je vais devoir me retaper l'algo de la loi normale standard. C'est pas bien grave !
Par souci d'efficacité, je cherche un code déjà fait, et je suis tombé sur un code de Tyrtamos que voici :
Code:
from __future__ import division from math import * def pgaussred(x): """pgaussred(x): probabilité qu'une variable aléatoire distribuée selon une loi normale réduite soit inférieure à x""" if x==0: return 0.5 if x>=7.56: return 1.0 if x<=-7.56: return 0.0 u=abs(x) n=int(u*2000) du=u/n k=1/sqrt(2*pi) u1=0 f1=k p=0.5 for i in xrange(0,n): u2=u1+du f2=k*exp(-0.5*u2*u2) p=p+(f1+f2)*du*0.5 u1=u2 f1=f2 if x>0: return p else: return 1.0-p # exemple d'utilisation print pgaussred(-8)
http://python.jpvweb.com/mesrecettes...id=loi_normale
Sauf que :
Il a bien mis mu=0 (x==0) mais j'ai l'impression que son sigma=7.56 et non 1 (enfin je crois, si j'ai bien capté son code, sinon d'où sort ce 7.56 ?)
De plus, quand je tente de l'associer à mon code, j'ai une erreur. Je crois que c'est parce que sa fonction pgaussred() requiert un nombre et que moi c'est une variable (mais cette variable est normalement un nombre à ce stade du script ?). En effet, comme j'ai précisé plus haut, ça fait :
x=1+2
pgaussred(x)
#erreur
Par ailleurs j'ai pas vraiment bien saisi tout son code... Il aurait dû (pu) mieux le commenter...
Merci !
Commentaire