基于分布从列表中随机抽样

3 投票
2 回答
2265 浏览
提问于 2025-04-18 10:45

我有一串数字,想从中随机抽取一些数字。不过,这个抽取的方式是根据用户指定的某种分布来进行的。我不太确定使用别名法(这里)结合权重是否合适;我知道的有限,感觉别名法只是用均匀分布(如果我说错了请纠正我!)。如果我想用对数正态分布或者泊松分布来进行抽样,那该怎么做呢?

还有一个相关的问题,如果我的数字列表是[1, 2, 3, 4, 5],而平均值是3,那我该如何进行抽样呢?

2 个回答

0

你可以在这里找到很多 numpy 的函数:

http://docs.scipy.org/doc/numpy/reference/routines.random.html

标准的 Python random 库并没有提供各种不同的随机数分布。而且,没错,默认的随机数是均匀分布的。

2

你试过用 np.random.choice 吗?

b = np.random.choice(a=[1,2,3,4,5], p=[0.2, 0.2, 0.2, 0.2, 0.2])

这里的 b 是从 a 这个列表中随机选出来的,选的概率是根据 p 这个分布来的。

你也可以使用 poisson

撰写回答