python随机数生成

前言:

 第一次写博客,主要是想把会用到但不常用的一些python知识写下来。这次就先写随机数生成这一块(因为最近用到了)。

 python里随机数生成主要有两种方式,一种是random库,另一种是numpy.random。我目前后一种用的比较多,因此就先介绍后一种中一些(我)可能常用的,第一种等有时间了再整理。

1. 用numpy.random生成随机数
1.1 生成服从均匀分布的随机数
1.2 生成服从正态分布的随机数
1.3 生成服从指数分布的随机数
1.4 生成服从二项分布的随机数
1.5 从指定一维数据集中随机选择数据:(可用于bootstrap抽样)
1.6 将数据打乱(可用于Permutation Test)

1. 用numpy.random生成随机数

1.1 生成服从均匀分布的随机数:

语法:np.random.uniform(low, high, size)

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

#通过low=0, high=1, size=10000,我们可以得到10000个0-1之间的随机数
data1 = np.random.uniform(low=0, high=1, size=10000)
#density设为true是将频数转化为频率
plt.hist(data1, bins=100, density=True)
plt.show()

在这里插入图片描述

1.2 生成服从正态分布的随机数:

语法:np.random.normal(loc, scale, size)

说明:其中scale为标准差

#得到10000个服从均值为2,方差为1的正态分布的随机数
data2 = np.random.normal(2, 1, 10000)
plt.hist(data2, bins=100, density=True)
plt.show()

正态分布

1.3 生成服从指数分布的随机数

语法:np.random.exponential(scale, size)

说明:scale即为 f ( x ) = e − λ f(x)=e^{-\lambda} f(x)=eλ中的 λ \lambda λ

data_e = np.random.exponential(1, 10000)
plt.hist(data_e, bins=100, density=True)
plt.show()

在这里插入图片描述

1.4 生成服从二项分布的随机数

语法:np.random.binomial(n, p, size)

说明参数n表示一次实验的样本数,p为每个样本发生的概率

#比如说,抛size=10次硬币,正面朝上的概率为p=0.5
data3 = np.random.binomial(1, p=0.5, size=10)
print(data3)

输出:[0 1 0 1 1 1 0 0 0 1]

1.5 从指定一维数据集中随机选择数据:(可用于bootstrap抽样)

语法:np.random.choice(a, size=None, replace=True, p=None)

说明:replace默认为True,意思是可以重复选择数据,即有放回抽样

data4 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
#从data4中有放回抽5次
data5 = np.random.choice(data4, size=5)
print(data5)

输出:[ 5 10 3 9 2]

1.6 将数据打乱(可用于Permutation Test)

语法:np.random.shuffle()或np.random.permutation()
说明:shuffle是直接在原数据上打乱,permutation则是不打乱原数据,而是返回一个打乱后的数据,为numpy.ndarray对象。

import numpy as np


data1 = [1, 2, 3, 4, 5]
#先用np.random.shuffle()
data2 = np.random.shuffle(data1)
print(data1) #结果为[1, 2, 5, 4, 3],可见将原数据打乱了
print(data2) #返回None,因为np.random.shuffle()不返回


data3 = [1, 2, 3, 4, 5]
#接下来用np.random.shuffle()
data4 = np.random.permutation(data1)

print(data3) #结果为[1, 2, 3, 4, 5],原数据并没有乱
print(data4) #返回[5 3 1 2 4],为numpy.ndarray对象

猜你喜欢

转载自blog.csdn.net/TSzero/article/details/111570068