在数据分析中,随机数不仅有利于数据分析,而且在机器学习方面随机数的使用也是机器学习算法配置和评估的重要部分。例如,神经网络中的权重的随机初始化和将数据分成随机的训练和测试集等。因此,生成随机数是数据分析中一项很重要的技术。
在 Python 中,可以通过 Python 中的 random 模块生成随机数,但是,其效率要远低于利用 NumPy 中的 random 模块生成随机数。numpy.random 模块提供了非常全的自动产生数据的 API,通过该模块中的函数可以很方便地生成随机数。下面介绍使用 numpy.random 模块中的函数生成随机数的常用方法。
使用 rand() 函数
rand() 函数的格式如下:
numpy.random.rand(d0,d1, …,dn)
该函数的作用是生成一个 (d0,d1, …,dn) 维的数组,数组的元素取自 [0, 1) 内均匀分布的随机数,但数组的元素不包括 1。若没有参数输入,则生成一个数。括号里面的参数是指定产生数组的形状。
randn() 函数
randn() 函数的格式如下:
numpy.random.randn(d0,d1, …,dn)
该函数的作用是生成一个 (d0,d1, …,dn) 维的数组,数组的元素是标准正态分布随机数。若没有参数输入,则生成一个数。括号里面的参数是指定产生数组的形状。
randint() 函数
randint() 函数的格式如下:
numpy.random.randint(low, high, size, dtype)
该函数的作用是生成指定范围的随机数,随机数取值区间为 [low, high),若没有输入参数 high 则取值区间为 [0, low)。size 参数是元组,用于确定数组的形状,dtype 用于指定数组中的数据类型。
random() 函数
random() 函数格式如下:
numpy.random.random(size=None)
该函数的作用是产生 [0.0, 1.0) 之间的浮点数,但数组的元素不包括 1。size 表示生成元素个数。若没有参数输入,则生成一个数。
生成随机数的示例代码 example1 如下。
# -*- coding: utf-8 -*-
import numpy as np
#用rand()生成随机数
a = np.random.rand() #生成一个数
b = np.random.rand(1) #生成1行1列数组
c = np.random.rand(2,3) #生成2行3列数组
print(a,b,c)
#用randn()生成随机数
a = np.random.randn() #生成一个数
b = np.random.randn(1) #生成1行1列数组
c = np.random.randn(2,3) #生成2行3列数组
print(a,b,c)
#用randint()生成随机数
a = np.random.randint(6)
b = np.random.randint(6, size=1)
c = np.random.randint(6, size=(2,4),dtype='int64')
print(a,b,c)
#用random()生成随机数
a = np.random.random(6)
b = np.random.random()
print(a,b)
除了上述产生随机数的函数外,random 模块还包括许多产生随机数的函数,如表 1 所示。
函数 | 说明 |
---|---|
seed() | 确定随机数生成器的种子 |
permutation() | 返回一个序列的随机排列或返回一个随机排列的范围 |
shuffle() | 对一个序列逬行随机排列 |
binomial() | 产生二项分布的随机数 |
normal() | 产生正态(高斯)分布的随机数 |
beta() | 产生Beta分布的随机数 |
chisquare() | 产生卡方分布的随机数 |
gamma() | 产生Gamma分布的随机数 |
uniformO | 产生在[0,1]中均匀分布的随机数 |