python生成范围内随机数_如何使用Python中的pareto分布在specyfic范围内生成随机数...

documentation似乎有一个错误,可能让你感到困惑.

通常是呼叫签名中的参数名称:

numpy.random.pareto(a, size=None)

将参数名称与给定的详细信息匹配:

Parameters

----------

shape : float, > 0.

Shape of the distribution.

size : tuple of ints

Output shape. If the given shape is, e.g., ``(m, n, k)``, then

``m * n * k`` samples are drawn.

但是你看到第一个参数同时被称为a和shape.将您想要的形状作为函数的第一个参数传递,以获得大小数字的分布(它们不是元组,而是一个numpy数组).

如果您需要更改第二个参数(在wikipedia上称为xm),则只需将其添加到所有值,如docs中的示例所示:

Examples

--------

Draw samples from the distribution:

>>> a, m = 3., 1. # shape and mode

>>> s = np.random.pareto(a, 1000) + m

因此,实现下限是微不足道的:只需使用m的下限:

lower = 10 # the lower bound for your values

shape = 1 # the distribution shape parameter, also known as `a` or `alpha`

size = 1000 # the size of your sample (number of random values)

并创建具有下限的分布:

x = np.random.pareto(shape, size) + lower

然而,帕累托分布不是从上面限制的,所以如果你试图将其剪掉,它将真的是分布的truncated version,这不是完全相同的事情,所以要小心.如果形状参数远大于1,则分布以代数方式衰减,如x – (a 1),因此无论如何您都不会看到很多大值.

如果选择实现上限,一种简单的方法是生成普通样本,然后删除任何超出限制的值:

upper = 20

x = x[x

但现在样本的大小(可能)更小.您可以继续添加新的(并过滤掉太大的值),直到大小符合您的要求,但首先使其足够大,然后仅使用它们的大小会更简单:

x = np.random.pareto(shape, size*5/4) + lower

x = x[x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值