我使用scipy stats生成一个随机数。我使用了泊松分布。下面是一个例子:
import scipy.stats as sct
A =2.5
Pos = sct.poisson.rvs(A,size = 20)
当我打印Pos时,我得到了以下数字:
array([1, 3, 2, 3, 1, 2, 1, 2, 2, 3, 6, 0, 0, 4, 0, 1, 1, 3, 1, 5])
您可以从数组中看到生成了一些数字,如6。
我想做的是限制最大数(比如说5),也就是说,使用sct.poisson.rvs生成的任何随机数都应该等于或小于5,
我如何调整我的代码来实现它。顺便说一下,我在Pandas数据框架中使用了这个。
2条答案
按热度按时间qjp7pelc1#
我认为解决方案非常简单(假设我正确理解了您的问题):
然后
print(truncated_poisson)
:sulc1iza2#
你想要的可以称为 * 截断泊松分布 *,除了在这个术语的通常用法中,截断从下而不是从上发生(example)。最简单的,即使不总是最有效的,采样截断分布的方法是将所需的数组大小加倍,并且只保留落在所需范围内的元素;如果数量不够,则再增加一倍,以此类推。如下图所示:
典型输出:
[0 1 4 5 0 2 3 2 2 2 5 2 3 3 3 3 4 1 0 3]
.