# 03.random随机数
[toc]{type: "ol", level: [3,4,5]}
### 生成随机小数
> 生成0.0-1.0之间的随机数
#### 指定个数
- size=n
> 生成size个随机数
```python
numpy.random.random(size=2)
```
::: details result
array([0.60607276, 0.01306814])
:::
#### 指定行列
- size=(m,n)
> 生成m行n列个随机数
### 生成随机整数
#### 指定范围
```python
numpy.random.randint(6, 10, size=(10,))
```
::: details result
array([7, 6, 6, 6, 7, 8, 9, 8, 7, 8])
:::
### 正态分布随机数
#### 标准正态分布
> 默认:期望值为0,方差为1
```python
numpy.random.randn(2, 3, 4)
# 生成2个3行4列的多维数组
```
#### 自定义正太分布
normal | 说明
:-------------|:---------------
loc | 期望值 \
| 默认为0 因此在0左右的数据,出现的频率最高
scale | 方差 \
| 方差越大,直方图越扁平
size | 形状 \
| 生成的数组的规格
```python
numpy.random.randn(0, 0.8, (2, 3, 4))
# 生成期望值为0并且方差为0.8的2个3行4列的多维数组
```
### 随机数种子
> 正常情况下,种子本身是随机生成的
> 用于代码测试时,保证数据不变
```python
numpy.random.seed(12)
numpy.random.random()
# 根据上一次生成的随机数,按照公式生成新的随机数
# 原始种子不变,则随机数不变
numpy.random.random()
```
### 随机排列
> 将数据打乱顺序(洗牌)
```python
arr = numpy.array([1, 2, 3, 4, 5, 6])
numpy.random.shuffle(arr)
print(arr)
```
::: details result
[2 1 5 6 4 3]
:::