NumPy随机数生成函数的多种实现方法
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">一、基础随机数生成函数</a></li><ul class="second_class_ul"><li><a href="#_lab2_0_0">1.np.random.rand(d0, d1, ..., dn)</a></li><li><a href="#_lab2_0_1">2.np.random.randn(d0, d1, ..., dn)</a></li><li><a href="#_lab2_0_2">3.np.random.randint(low, high=None, size=None, dtype=int)</a></li><li><a href="#_lab2_0_3">4.np.random.random(size=None)</a></li></ul><li><a href="#_label1">二、概率分布抽样函数</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_4">1.np.random.uniform(low=0.0, high=1.0, size=None)</a></li><li><a href="#_lab2_1_5">2.np.random.normal(loc=0.0, scale=1.0, size=None)</a></li><li><a href="#_lab2_1_6">3.np.random.binomial(n, p, size=None)</a></li><li><a href="#_lab2_1_7">4.np.random.poisson(lam=1.0, size=None)</a></li></ul><li><a href="#_label2">三、随机抽样与排列</a></li><ul class="second_class_ul"><li><a href="#_lab2_2_8">1.np.random.choice(a, size=None, replace=True, p=None)</a></li><li><a href="#_lab2_2_9">2.np.random.shuffle(x)</a></li><li><a href="#_lab2_2_10">3.np.random.permutation(x)</a></li></ul><li><a href="#_label3">四、随机种子设置</a></li><ul class="second_class_ul"></ul><li><a href="#_label4">关键区别总结</a></li><ul class="second_class_ul"></ul></ul></div><p>NumPy 的 <code>numpy.random</code> 模块提供了丰富的随机数生成函数,覆盖基础随机数组、概率分布抽样和随机排列等功能。以下是常用函数的详细解析:</p><p class="maodian"><a name="_label0"></a></p><h2>一、基础随机数生成函数</h2>
<p class="maodian"><a name="_lab2_0_0"></a></p><h3>1.np.random.rand(d0, d1, ..., dn)</h3>
<ul><li><strong>功能</strong>:生成 [0, 1) 均匀分布的随机浮点数数组</li><li><strong>参数</strong>:<code>d0, d1...</code> 为数组维度(整数)</li><li><strong>示例</strong>:<div class="jb51code"><pre class="brush:py;">np.random.rand(2, 3)# 生成 2行3列的随机数组
# 输出:array([, ])
</pre></div></li></ul>
<p class="maodian"><a name="_lab2_0_1"></a></p><h3>2.np.random.randn(d0, d1, ..., dn)</h3>
<ul><li><strong>功能</strong>:生成符合标准正态分布(μ=0, σ=1)的随机数</li><li><strong>参数</strong>:同 <code>rand()</code></li><li><strong>示例</strong>:<div class="jb51code"><pre class="brush:py;">np.random.randn(2)# 生成2个标准正态分布随机数
# 输出:array([-0.45, 1.23])
</pre></div></li></ul>
<p class="maodian"><a name="_lab2_0_2"></a></p><h3>3.np.random.randint(low, high=None, size=None, dtype=int)</h3>
<ul><li><strong>功能</strong>:生成 [low, high) 区间的整数随机数</li><li><strong>参数</strong>:<ul><li><code>low</code>:下限(包含)</li><li><code>high</code>:上限(不包含,若未提供则从0开始)</li><li><code>size</code>:输出形状</li></ul></li><li><strong>示例</strong>:<div class="jb51code"><pre class="brush:py;">np.random.randint(1, 10, size=(3,))# 生成3个1-9的整数
# 输出:array()
</pre></div></li></ul>
<p class="maodian"><a name="_lab2_0_3"></a></p><h3>4.np.random.random(size=None)</h3>
<ul><li><strong>功能</strong>:生成 [0.0, 1.0) 均匀分布的随机浮点数(单个数或数组)</li><li><strong>示例</strong>:<div class="jb51code"><pre class="brush:py;">np.random.random((2,2))# 2x2随机矩阵
# 输出:array([, ])
</pre></div></li></ul>
<p class="maodian"><a name="_label1"></a></p><h2>二、概率分布抽样函数</h2>
<p class="maodian"><a name="_lab2_1_4"></a></p><h3>1.np.random.uniform(low=0.0, high=1.0, size=None)</h3>
<ul><li><strong>功能</strong>:生成指定区间 [low, high) 的均匀分布随机数</li><li><strong>示例</strong>:<div class="jb51code"><pre class="brush:py;">np.random.uniform(-1, 1, size=3)# 3个[-1,1)的均匀分布数
# 输出:array([-0.23, 0.56, -0.89])
</pre></div></li></ul>
<p class="maodian"><a name="_lab2_1_5"></a></p><h3>2.np.random.normal(loc=0.0, scale=1.0, size=None)</h3>
<ul><li><strong>功能</strong>:生成指定均值(loc)和标准差(scale)的正态分布</li><li><strong>示例</strong>:<div class="jb51code"><pre class="brush:py;">np.random.normal(loc=5, scale=2, size=2)# N(5, 2²)的2个样本
# 输出:array()
</pre></div></li></ul>
<p class="maodian"><a name="_lab2_1_6"></a></p><h3>3.np.random.binomial(n, p, size=None)</h3>
<ul><li><strong>功能</strong>:生成二项分布(n次试验,成功概率p)的随机数</li><li><strong>示例</strong>:<div class="jb51code"><pre class="brush:py;">np.random.binomial(n=10, p=0.5, size=3)# 3次10重伯努利试验的成功次数
# 输出:array()
</pre></div></li></ul>
<p class="maodian"><a name="_lab2_1_7"></a></p><h3>4.np.random.poisson(lam=1.0, size=None)</h3>
<ul><li><strong>功能</strong>:生成泊松分布(λ=lam)的随机数</li><li><strong>示例</strong>:<div class="jb51code"><pre class="brush:py;">np.random.poisson(lam=3, size=4)# λ=3的4个泊松样本
# 输出:array()
</pre></div></li></ul>
<p class="maodian"><a name="_label2"></a></p><h2>三、随机抽样与排列</h2>
<p class="maodian"><a name="_lab2_2_8"></a></p><h3>1.np.random.choice(a, size=None, replace=True, p=None)</h3>
<ul><li><strong>功能</strong>:从序列 <code>a</code> 中随机抽样</li><li><strong>参数</strong>:<ul><li><code>replace</code>:是否允许重复抽样(默认True)</li><li><code>p</code>:各元素抽样概率(需与a长度相同)</li></ul></li><li><strong>示例</strong>:<div class="jb51code"><pre class="brush:py;">np.random.choice(, size=3, p=)
# 按概率抽样3个元素,输出:array()
</pre></div></li></ul>
<p class="maodian"><a name="_lab2_2_9"></a></p><h3>2.np.random.shuffle(x)</h3>
<ul><li><strong>功能</strong>:原地打乱数组x(修改原数组)</li><li><strong>示例</strong>:<div class="jb51code"><pre class="brush:py;">arr = np.array()
np.random.shuffle(arr)# arr变为
</pre></div></li></ul>
<p class="maodian"><a name="_lab2_2_10"></a></p><h3>3.np.random.permutation(x)</h3>
<ul><li><strong>功能</strong>:生成数组x的随机排列(不修改原数组)</li><li><strong>示例</strong>:<div class="jb51code"><pre class="brush:py;">np.random.permutation()# 输出:array()
</pre></div></li></ul>
<p class="maodian"><a name="_label3"></a></p><h2>四、随机种子设置</h2>
<div class="jb51code"><pre class="brush:py;">np.random.seed(42)# 设置随机种子,保证结果可复现
np.random.rand(2) # 每次运行结果相同:array()
</pre></div>
<p class="maodian"><a name="_label4"></a></p><h2>关键区别总结</h2>
<table><thead><tr><th>函数组</th><th>核心特点</th><th>典型应用场景</th></tr></thead><tbody><tr><td>rand/randn</td><td>无需参数直接指定维度,快捷生成数组</td><td>快速创建随机矩阵</td></tr><tr><td>uniform/normal</td><td>可自定义分布参数(区间/均值等)</td><td>模拟特定概率分布的数据</td></tr><tr><td>choice/shuffle</td><td>针对序列的抽样与重排</td><td>随机选样、打乱数据顺序</td></tr></tbody></table>
頁:
[1]