【发布时间】:2021-07-13 20:09:13
【问题描述】:
我是 Python 的初学者,正在尝试一些对我来说太复杂的东西。
我想输出一个列表(q),k-items long,其中每一项都是五个选项之一(包含在列表w em>)。
w = [a, b, c, d, e]
我正在使用 random.choices 创建列表 q。
我希望每个项目的权重由倾斜的钟形曲线(甚至是一个粗略的近似值)控制,其中曲线峰值的水平位置等于 p。 p 范围从 0.1 到 1。
所以,如果p = 0.55,项目c应该有最高的概率出现在列表q中,其中b 和 d 的概率第二高,a 和 e 的概率最低。如果 p = 0.1,a 应该是最有可能出现的,而 e 应该是最不可能出现的,以此类推。
我找到了 scipy.stats.skewnorm,它似乎可以工作。但是,我真的很难将其调整为我需要的形式。
我在寻找一个 0 ≤ y ≤ 1 和 0 ≤ x ≤ 1.2 的函数。然后我希望这个函数为 random.choices 创建五个权重,如下所示:
p = 0.7
prob_a = f(0.2, p)
prob_b = f(0.4, p)
prob_c = f(0.6, p)
etc...
q = random.choices(w, weights=[prob_a, prob_b, prob_c, etc...], k=10)
我将非常感谢任何和所有的建议、方向或建议!我不喜欢 random.choices 或 skewnorm - 如果有更简单的方法来实现类似的结果,那就太棒了!
【问题讨论】:
-
你为什么在这里使用“倾斜的钟形曲线”?
x和y是什么? -
@SamMason 我只是使用
x和y来显示我所追求的函数的域和范围。在我的代码中,x将是我找到函数输出的五个点之一(0.2、0.4 等...)。y:我总是希望输出小于 1。至于倾斜的钟形曲线:我想我希望y适合正态分布的曲线,但根据该分布偏离中心到p。最后,如果p= ~0.5,我希望列表q大部分时间包含 c,但有时包含 b 和 d,偶尔以a和e为特色。 -
很确定你不想要一个偏斜的分布,你只想移动平均值。而且您对点的重新标记似乎使问题感到困惑,使用索引同样强大,这意味着您无需在任何地方指定它们
标签: python random statistics probability