概率随机分布

2020-12-30 13:47:56 +08:00
 stdout

np.random.choice()可以对固定数组设置概率随机。限制是固定的数组。 如果我要区间概率随机,比如 0-100 取数 0-10:1% 10-20:9% 20-30: 20% 30-80: 30% 80-99: 39.99% 100: 0.01% 有什么库能直接处理这个问题呢?先谢谢各位先。

1592 次点击
所在节点    Python
6 条回复
NaVient
2020-12-30 13:56:59 +08:00
提供一个思路,用真随机来做概率随机,按照比例扩充样本数量 :)
NaVient
2020-12-30 14:01:11 +08:00
然后附上代码
"""
p = np.array([0.2,0.4,0.3,0.1])
print(np.random.choice([0,1,2,3], p = p.ravel()))
"""
stdout
2020-12-30 14:05:33 +08:00
@NaVient 这个是固定的数组随机,需要实现范围内概率随机。
NaVient
2020-12-30 14:16:18 +08:00
@stdout #3 想法灵活一点,用两次随机,第一次随机拿到按概率随机的范围,第二次随机从范围中真随机一个对象
hahastudio
2020-12-30 14:26:10 +08:00
stdout
2020-12-30 15:15:36 +08:00
"""
import random
n = 1000
# 分布参数
params = {
(0, 10): 0.01,
(10, 20): 0.1,
(20, 50): 0.2,
(50, 60): 0.68,
(90, 100): 0.01,
}
p = np.array(list(params.values()))
c = np.array(range(len(params)))
x = np.arange(n)
y = []
for _ in range(n):
_c = np.random.choice(c, p=p.ravel())
_yc = list(params.keys())[_c]
_y = random.randrange(*_yc)
y.append(_y)

plt.scatter(x, y)
"""

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/740297

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX