IOK so I want to be able to pick values from a normal distribution that only ever fall between 0 and 1. In some cases I want to be able to basically just return a completely random distribution, and in other cases I want to return values that fall in the shape of a gaussian.
At the moment I am using the following function:
numb = random.gauss(mu,sigma)
if (numb > 0 and numb < 1):
It sounds like you want a truncated normal distribution.
Using scipy, you could use
scipy.stats.truncnorm to generate random variates from such a distribution:
import matplotlib.pyplot as plt import scipy.stats as stats lower, upper = 3.5, 6 mu, sigma = 5, 0.7 X = stats.truncnorm( (lower - mu) / sigma, (upper - mu) / sigma, loc=mu, scale=sigma) N = stats.norm(loc=mu, scale=sigma) fig, ax = plt.subplots(2, sharex=True) ax.hist(X.rvs(10000), normed=True) ax.hist(N.rvs(10000), normed=True) plt.show()
The top figure shows the truncated normal distribution, the lower figure shows the normal distribution with the same mean
mu and standard deviation