前言
每次用到随机数函数的时候总是记不清哪个函数产生什么类型的随机数,都要现查。因此写了这篇总结文章,以供需要时查阅和复习。
首先,用于生成随机数的模块有两个:
- python内置的random模块
- numpy.random模块
接下来分别介绍这两个模块中的一些常用函数:
一、python内置的random模块
random.random():产生一个0到1范围内的随机浮点数
random.uniform(a, b):产生一个随机浮点数n,a<= n <= b或者b<=n<=a。(此处a和b的相对大小关系没有限制)
random.randint(a, b):产生一个随机整数n,a<=n<=b。(此处a必须小于b,否则报错)
random.choice(sequence):从序列中随机获取一个元素。sequence指元素的集合,可为元组、列表或者字符串。
random.randrange([start,] stop[, step]):在 指定范围内,按照指定基数递增的集合中 随机获取一个元素
random.sample(sequence, k):从序列中随机选取k个元素组成一个新列表。
random.shuffle(list):将列表中的元素随机排序。注意此函数没有返回值,直接改变list。
举例:
import random # 首先导入random包
# 随机浮点数
print(random.random())
print(random.uniform(10, 20)) # a < b时
print(random.uniform(40, 30)) # a > b时
# 随机整数
print(random.randint(1, 5))
# 随机元素
print(random.choice('abcdef'))
print(random.choice( [1, 3, 5, 'ha'] ))
print(random.choice( (2, 4, 6, 'hey') ))
# 选取某范围内的随机元素
print(random.randrange(2, 10, 2)) # 在[2, 4, 6, 8]中随机选取一个元素,不包括10
print(random.randrange(5)) # 在[1, 2, 3, 4]中随机选取一个元素
# 随机选取
li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(random.sample(li, 5))
tu = (11, 12, 13, 14, 15)
print(random.sample(tu, 2))
s = 'helloworld'
print(random.sample(s, 3))
random.shuffle(li) # 随机打乱li中元素的顺序
print(li)
二、numpy.random模块
1、np.random.rand([d0, d1, ..., dn]):返回[0.0, 1.0]之间的随机浮点数或数组,d0, d1, ...为数组的维度
# [0.0, 1.0]之间的随机浮点数
print(np.random.rand())
# [0.0, 1.0]之间的随机浮点数组
print(np.random.rand(2, 3)) # 2行3列
print(np.random.rand(2, 2, 3)) # 三维数组,维度为(2, 2, 3)
运行结果如下:2、np.random.randn([d0, d1, ..., dn]) :返回标准正态分布样本值
# 正态分布随机样本值
print(np.random.randn())
# 正态分布随机样本数组
print(np.random.randn(2, 3)) # 2行3列
print(np.random.randn(2, 2, 3)) # 三维数组,维度为(2, 2, 3)
运行结果如下:3、np.random.randint([low,] high[, size]) :返回随机整数,位于半开区间 [low, high)
# 随机整数
print(np.random.randint(10)) # 返回一个小于10的随机整数
# 随机整数数组
print(np.random.randint(5, size=3))
print(np.random.randint(4, size=(2, 3)))
print(np.random.randint(1, 4, size=(3, 3)))
运行结果如下: