我想从有界域的“zipf”分布中取样。在
也就是说,假设域是{1,…,N},我希望域中的每一个元素,都以概率与i ** -a
成正比,其中{
numpy
提供了一个zipf采样器(numpy.random.zipf),但它不允许我限制域。在
How can I easily sample from such distribution?
如果分布参数a
大于1,我可以使用numpy
取样器,拒绝(并重新采样)大于N
的所有样本。但是,由于它不限制采样范围,所以尝试使用任何较小的a
值都不起作用。在
当域是有限的时,使用这样的a
应该没有问题,这就是我的应用程序所需要的。在
使用
scipy.stats
,您可以创建一个自定义的离散分布:例如
^{pr2}$收益率
如果采样性能有问题,您可以基于拒绝反转采样实现自己的采样方法。您将找到相应的Java实现here。在
相关问题 更多 >
编程相关推荐