diff --git a/src/qinfer/distributions.py b/src/qinfer/distributions.py index 815b1da..dadf7fb 100644 --- a/src/qinfer/distributions.py +++ b/src/qinfer/distributions.py @@ -262,6 +262,28 @@ def sample(self, n=1): z = np.random.randn(n,self._n_rvs) return self._ranges[:, 0] +self._weight*z+np.random.rand(n)*self._ranges[:, 1]; +class LogNormalDistribution(Distribution): + """ + Log-normal distribution. + + :param mu: Location parameter (numeric), set to 0 by default. + :param sigma: Scale parameter (numeric), set to 1 by default. + Must be strictly greater than zero. + """ + + def __init__(self, mu=0, sigma=1): + self.mu = mu # lognormal location parameter + self.sigma = sigma # lognormal scale parameter + + self.dist = st.lognorm(sigma,0,mu) # scipy distribution location = 0 + + @property + def n_rvs(self): + return 1 + + def sample(self, n=1): + return self.dist.rvs(size=n)[:,np.newaxis] + class MVUniformDistribution(object): def __init__(self, dim = 6):