【基础】使用NumPy的随机数生成器(random)进行随机数的生成和抽样
发布时间: 2024-06-24 14:43:42 阅读量: 77 订阅数: 128
![【基础】使用NumPy的随机数生成器(random)进行随机数的生成和抽样](https://img-blog.csdnimg.cn/img_convert/f061f68aac43a27af82ec254a9f8d9a4.webp?x-oss-process=image/format,png)
# 1. NumPy随机数生成器的简介**
NumPy是Python中一个强大的数值计算库,它提供了各种随机数生成器,用于生成具有不同分布的随机数。这些随机数生成器在机器学习、统计建模和模拟等领域有着广泛的应用。本章将介绍NumPy随机数生成器的基本概念和功能。
# 2. 随机数生成
### 2.1 均匀分布
#### 2.1.1 rand()函数
`rand()` 函数生成一个 [0, 1) 区间的均匀分布随机数。它返回一个指定形状的数组,其中每个元素都是一个随机数。
```python
import numpy as np
# 生成一个 3x4 矩阵的均匀分布随机数
rand_matrix = np.random.rand(3, 4)
print(rand_matrix)
```
**代码逻辑:**
1. `np.random.rand(3, 4)` 生成一个形状为 (3, 4) 的矩阵,其中每个元素都是一个 [0, 1) 区间的均匀分布随机数。
2. `print(rand_matrix)` 打印随机数矩阵。
#### 2.1.2 randn()函数
`randn()` 函数生成一个均值为 0,标准差为 1 的正态分布随机数。它返回一个指定形状的数组,其中每个元素都是一个随机数。
```python
# 生成一个 3x4 矩阵的正态分布随机数
randn_matrix = np.random.randn(3, 4)
print(randn_matrix)
```
**代码逻辑:**
1. `np.random.randn(3, 4)` 生成一个形状为 (3, 4) 的矩阵,其中每个元素都是一个均值为 0,标准差为 1 的正态分布随机数。
2. `print(randn_matrix)` 打印随机数矩阵。
### 2.2 正态分布
#### 2.2.1 normal()函数
`normal()` 函数生成一个指定均值和标准差的正态分布随机数。它返回一个指定形状的数组,其中每个元素都是一个随机数。
```python
# 生成一个均值为 5,标准差为 2 的正态分布随机数
normal_dist = np.random.normal(5, 2, 1000)
print(normal_dist)
```
**代码逻辑:**
1. `np.random.normal(5, 2, 1000)` 生成一个形状为 (1000,) 的数组,其中每个元素都是一个均值为 5,标准差为 2 的正态分布随机数。
2. `print(normal_dist)` 打印随机数数组。
### 2.3 指数分布
#### 2.3.1 exponential()函数
`exponential()` 函数生成一个指定速率的指数分布随机数。它返回一个指定形状的数组,其中每个元素都是一个随机数。
```python
# 生成一个速率为 0.5 的指数分布随机数
exponential_dist = np.random.exponential(0.5, 1000)
print(exponential_dist)
```
**代码逻辑:**
1. `np.random.exponential(0.5, 1000)` 生成一个形状为 (1000,) 的数组,其中每个元素都是一个速率为 0.5 的指数分布随机数。
2. `print(exponential_dist)` 打印随机数数组。
# 3. 随机抽样
### 3.1 从均匀分布中抽样
#### 3.1.1 choice()函数
`choice()` 函数从给定的序列中随机抽取一个或多个元素。其语法如下:
```python
numpy.random.choice(a, size=None, replace=True, p=None)
```
其中:
* `a`:序列,可以是列表、元组、数组等。
* `size`:抽取元素的数量。默认为 1,表示抽取一个元素。
* `replace`:是否允许重复抽取。默认为 True,表示允许重复抽取。
* `p`:每个元素被抽取的概率。默认为 None,表示所有元素的概率相等。
**示例:**
从一个包含数字 1 到 10 的列表中随机抽取 3 个数字,允许重复:
```python
import numpy as np
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = np.random.choice(numbers, size=3, replace=True)
print(result)
```
输出结果可能为:
```
[3 1 6]
```
#### 3.1.2 randint()函数
`randint()` 函数从给定的范围中随机生成一个整数。其语法如下:
0
0