实际的代码中往往会使用到随机数,random函数往往具有生成随机数的功能,另外numpy.random模块在python内建的random模块基础上,可以高效生成不同概率分布下的完整样本值数组。
所谓伪随机数,是由具有确定性行为的算法根据随机数生成器中的随机数种子生成的
样本生成的几个常用的分布函数列表如下:
1. 随机种子:seed函数
1.1 随机数种子的理解
理解:由上文对伪随机数的理解,它是由具有确定性行为的算法根据随机数生成器中的随机数种子生成的,所以向随机数生成器传递随机状态种子时,会有不同的状态。所谓种子,实际是在seed函数中的一个具体的数字,该数字代表一种随机数状态。
作用:对于一个伪随机数生成器,从相同的随机数种子出发,可以得到相同的随机数序列
1.2实际运用
如下图所示,当seed函数内的参数不同时,返回的random随机值是不同的,但是当seed内的参数相同时,返回的随机值是固定的。
2 随机排列序列:shuffle与 permutation函数
2.1 函数的理解
理解:
shuffle:随机排列一个序列
permutation:返回一个序列的随机序列,或者返回一个乱序的整数范围序列
作用: 往往在进行训练时,需要有打乱数组序列的要求,可以理解为洗牌,这时shuffle和permutaion就可以派上用场
区别: shuffle在原有的数组上进行操作,操作后原有数组被打乱,无返回值;permutation返回一个打乱的数组,原有的数组没有变化
2.2 实际应用
如下图所示,定义了一个有序的数组myarr,序列从0到9,经过permutation函数的操作,得到的per_arr数组是myarr打乱后的数组序列。而经过shuffle函数的操作,shu_arr数组值为None,也就是shuffle函数无返回值,而原有的myarr数组序列已经被打乱 。
3 其他不同分布抽取样本
numpy.random中不同分布抽取样本的函数如下:
rand :从0-1均匀分布找中抽取样本
randint :根据给定的由低到高的范围抽取随机整数
randn: 从均值为0方差为1的正态分布中抽取样本
binomial: 从二项分布中抽取样本
normal: 从正态分布中抽取样本
beta: 从beta分布中抽取样本
chisquare: 从卡方分布中抽取样本
gamma: 从伽马分布中抽取样本
uniform: 从均匀分布中抽取样本
实际应用
rand函数默认为0-1均匀分布,函数参数直接输入维度就行,如下图为2行三列
其他的函数如下: