I was wondering how to generate a random weibull distribution with 2-parameter (lambda, k) in python. I know that numpy has a numpy.random.weibull, but it only accepts the a parameter as the shape of the distribution.
Asked
Active
Viewed 8,813 times
2 Answers
6
Well, if you sample a number from weibull distribution with scale parameter missing (which assumes scale is equal to 1), then to get it scale multiply by lambda.
x = numpy.random.weibull(a)
return lambda*x

Severin Pappadeux
- 18,636
- 3
- 38
- 64
5
Severin Pappadeux's answer is probably the simplest way to include the scale parameter. An alternative is to use scipy.stats.weibull_min
. weibull_min
has three parameters: shape, location and scale. You only want the shape and scale, so you would set the location to 0.
from scipy.stats import weibull_min
n = 100 # number of samples
k = 2.4 # shape
lam = 5.5 # scale
x = weibull_min.rvs(k, loc=0, scale=lam, size=n)

Warren Weckesser
- 110,654
- 19
- 194
- 214