np.random.choice()可以对固定数组设置概率随机。限制是固定的数组。 如果我要区间概率随机,比如 0-100 取数 0-10:1% 10-20:9% 20-30: 20% 30-80: 30% 80-99: 39.99% 100: 0.01% 有什么库能直接处理这个问题呢?先谢谢各位先。
1
NaVient 2020-12-30 13:56:59 +08:00 1
提供一个思路,用真随机来做概率随机,按照比例扩充样本数量 :)
|
2
NaVient 2020-12-30 14:01:11 +08:00 1
然后附上代码
""" p = np.array([0.2,0.4,0.3,0.1]) print(np.random.choice([0,1,2,3], p = p.ravel())) """ |
5
hahastudio 2020-12-30 14:26:10 +08:00 1
|
6
stdout OP """
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) """ |