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