# Fix Python – How to calculate probability in a normal distribution given mean & standard deviation?

## Question

Asked By – clwen

How to calculate probability in normal distribution given mean, std in Python? I can always explicitly code my own function according to the definition like the OP in this question did: Calculating Probability of a Random Variable in a Distribution in Python

Just wondering if there is a library function call will allow you to do this. In my imagine it would like this:

``````nd = NormalDistribution(mu=100, std=12)
p = nd.prob(98)
``````

There is a similar question in Perl: How can I compute the probability at a point given a normal distribution in Perl?. But I didn’t see one in Python.

`Numpy` has a `random.normal` function, but it’s like sampling, not exactly what I want.

Now we will see solution for issue: How to calculate probability in a normal distribution given mean & standard deviation?

There’s one in scipy.stats:

``````>>> import scipy.stats
>>> scipy.stats.norm(0, 1)
<scipy.stats.distributions.rv_frozen object at 0x928352c>
>>> scipy.stats.norm(0, 1).pdf(0)
0.3989422804014327
>>> scipy.stats.norm(0, 1).cdf(0)
0.5
>>> scipy.stats.norm(100, 12)
<scipy.stats.distributions.rv_frozen object at 0x928352c>
>>> scipy.stats.norm(100, 12).pdf(98)
0.032786643008494994
>>> scipy.stats.norm(100, 12).cdf(98)
0.43381616738909634
>>> scipy.stats.norm(100, 12).cdf(100)
0.5
``````

[One thing to beware of — just a tip — is that the parameter passing is a little broad. Because of the way the code is set up, if you accidentally write `scipy.stats.norm(mean=100, std=12)` instead of `scipy.stats.norm(100, 12)` or `scipy.stats.norm(loc=100, scale=12)`, then it’ll accept it, but silently discard those extra keyword arguments and give you the default (0,1).]

This question is answered By – DSM

This answer is collected from stackoverflow and reviewed by FixPython community admins, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0