【问题标题】:Weighted randomization generation in PythonPython中的加权随机化生成
【发布时间】:2022-07-06 13:42:41
【问题描述】:
我想生成一个 150k 值的加权随机分布,其中分布中的权重由 Python 中的 F(v) 给出(参见 Weibull 分布的附图)。因此,根据等式,代码应生成 150k 值,范围从 0 到 30(即 v)。
并且这 150k 值可以是该范围内的任何实数,而不仅仅是整数,并且随着该函数在该范围内达到峰值,该数字位于中低范围内的机会将更高。
注意:m,c,k 是常数,v 是我们想要 150k 值的唯一变量。
Weibull Distribution
【问题讨论】:
标签:
python
python-3.x
random
weighted
weibull
【解决方案1】:
您可以使用surpyval 来执行此操作。 Surpyval 使用 Weibull 分布的参数 alpha、beta 和 gamma。 alpha、beta、gamma分别相当于你提供的图片中的参数c、k、m。
以下代码从 c、k 和 m 创建分布,然后从该分布生成 150k 个随机变量。
from surpyval import Weibull
k = 1.5
c = 50.3
m = 25.
model = Weibull.from_params((c, k), gamma=m)
# generate random variables
random_values = model.random(150000)