<p>在
<a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.pareto.html">documentation</a>似乎有个错误,可能会让您困惑。在</p>
<p>通常调用签名中的参数名称:</p>
<pre class="lang-py prettyprint-override"><code>numpy.random.pareto(a, size=None)
</code></pre>
<p>将参数名称与给定的详细信息匹配:</p>
^{pr2}$
<p>但是您可以看到第一个参数同时被称为<code>a</code>和{<cd2>}。将所需的<em>shape</em>作为函数的第一个参数,以获得<code>size</code>数的分布(它们不是<code>tuple</code>,而是一个numpy<code>array</code>)。在</p>
<p>如果需要更改第二个参数(在<a href="https://en.wikipedia.org/wiki/Pareto_distribution#Probability_density_function">wikipedia</a>上称为x<sub>m</sub>),那么只需将其添加到所有值中,如<a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.pareto.html">docs</a>中的示例所示:</p>
<pre class="lang-py prettyprint-override"><code>Examples
Draw samples from the distribution:
>>> a, m = 3., 1. # shape and mode
>>> s = np.random.pareto(a, 1000) + m
</code></pre>
<hr/>
<p>因此,实现一个下界并不重要:只需使用<code>m</code>的下限:</p>
<pre class="lang-py prettyprint-override"><code>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)
</code></pre>
<p>并用下限创建分布:</p>
<pre class="lang-py prettyprint-override"><code>x = np.random.pareto(shape, size) + lower
</code></pre>
<p>然而,帕累托分布并不是从上面有界的,所以如果你试图切断它,它实际上是分布的<a href="https://en.wikipedia.org/wiki/Truncated_distribution">truncated version</a>,这不是完全一样的事情,所以要小心。如果形状参数远大于1,则分布会以代数形式衰减,如x<sup>–(a+1)</sup>,因此您不会看到太多大的值。在</p>
<p>如果您选择实现上限,一种简单的方法是生成普通样本,然后移除任何超出限制的值:</p>
<pre class="lang-py prettyprint-override"><code>upper = 20
x = x[x<upper] # only values where x < upper
</code></pre>
<p>但现在你的样品尺寸(可能)更小了。您可以继续添加新的值(并过滤掉太大的值),直到达到所需的大小,但是首先使其足够大,然后只使用其中的<code>size</code>会更简单:</p>
<pre class="lang-py prettyprint-override"><code>x = np.random.pareto(shape, size*5/4) + lower
x = x[x<upper][:size]
</code></pre>