In [14]:
import matplotlib.pyplot as plt
import scipy.stats as ss
Lambda = 2.5 #expected mean of exponential distribution is lambda in Scipy's parameterization
Size = 1000
trc_ex_rv = ss.expon.rvs(scale=Lambda, size=Size)
trc_ex_rv = trc_ex_rv[(trc_ex_rv>1)&(trc_ex_rv<10)]
In [15]:
plt.hist(trc_ex_rv)
plt.xlim(0, 12)
Out[15]:
(0, 12)
In [16]:
trc_ex_rv
Out[16]:
array([...]) #a lot of numbers
1 回答
有两种方法可以做到这一点:
第一种是生成指数分布的随机变量,然后将值限制为(1,10) .
当然,问题是你不会得到确切的随机数(这里由
Size
定义) .另一种方法是使用Inverse transform sampling,您将获得指定的确切重复次数:
如果希望得到的有界分布具有给定值的预期平均值,比如说
2.5
,则需要求解得到预期均值的scale参数 .结果: