# np.random模块
### 1. np.random.choice(a, size=None, replace=True)
从数列a中随机选择size个元素,replace为True表示选出的元素允许重复。
```python
a = np.arange(10)
n1 = np.random.choice(a, 5)
n2 = np.random.choice(a, 5, replace=True)
a
>>>array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
n1
>>>array([9, 9, 6, 3, 6])
n2
>>>array([0, 4, 9, 3, 7])
```
### 2. np.random.rand(d0, d1, ..., dn)
产生维度为(d0, d1, ..., dn),值属于[0,1)的正太分布
```python
np.random.rand(2, 5)
>>>array([[0.85430119, 0.77218818, 0.596804 , 0.47122106, 0.83833491],
[0.69707853, 0.89548212, 0.28075762, 0.89051758, 0.5542581 ]])
```
### 3. np.random.randint(low, high=None, size=None, dtype)
产生属于[low,high)的size数量的离散均匀分布。如果high为None,则产生属于[0,low)的离散均匀分布。size值可以为数值(产生结果为一维),也可以为list或者tuple。
```python
np.random.randint(0, 10, 5)
>>>array([4, 2, 2, 7, 6])
np.random.randint(0, 10, (2, 5))
array([[9, 9, 9, 1, 6],
[6, 0, 5, 0, 6]])
```
### 4. np.random.randn(d0, d1, ..., dn)
产生维度为(d0, d1, ..., dn)的标准正太分布,同np.random.standard_uniform(),这两个函数功能相同,只是参数写法不同。
```python
np.random.randn(2, 5)
>>>array([[ 0.1142037 , 0.02289707, -0.79126569, 0.63222699, -0.57058646],
[ 0.97086442, -0.5591229 , -0.23254649, -0.83836432, 0.40212082]])
```
### 5. np.random.random(size=None)
产生属于[0.0, 1.0)的size数量的连续均匀分布。
```python
np.random.random(10)
>>>array([0.18415471, 0.26517935, 0.18835891, 0.74001802, 0.29266111,
0.33034737, 0.63918234, 0.63906577, 0.14263593, 0.74097519])
np.random.random((2, 5))
array([[0.89339891, 0.59936845, 0.94216104, 0.9409255 , 0.72263055],
[0.03008944, 0.58887891, 0.79108164, 0.43515193, 0.23441162]])
```
### 6. np.random.random_sample(size=None)
同:np.random.random(size=None)
### 7. np.random.sampe(size=None)
同:np.random.random(size=None)
### 8. np.random.standard_normal(size=None)
同:np.random.randn(*d0*, *d1*, *...*, *dn*)
### 9. np.random.binomial(n,p,size=None)
对二项分布进行采样。n表示采样次数,p表示成功的概率,size表示输出结果的形状(shape)