在python编程中,随机数是一个某些时候非常有用的功能。
随机数的产生涉及numpy.random模块和random模块
本文可能无法涉及所有的情况,但是常用的情况都会简单说一下:
首先是random模块,注意引用import random
1 随机单个数字
随机范围的整数 上界和下界
import random
random.randint(12, 20)
# 14
随机的浮点数
# 随机浮点数 0-1直接
random.random()
# 0.3535694721335949
# 指定范围的浮点数
random.uniform(5, 10)
# 8.169873914919975
可以设定满足的倍数关系,比如仅随机得到5的倍数的数字
random.randrange(0, 60, 5)
# 35
2. 随机数组
我们有时候需要一整个的随机数组成的数组,一个一个元素的随机很是麻烦,numpy.random模块提供了我们这样的操作
注意引用import numpy as np
随机浮点数数组 使用n控制数组大小,并且randn支持生成的数组满足正太分析
np.random.rand(6)
# array([0.08971799, 0.71386314, 0.23128967, 0.68115601, 0.51200213,
0.15844753])
np.random.randn(6)
# array([ 0.70164022, 0.70766772, -0.13613055, -0.28591212, -1.44826154,
0.56223578])
随机整数数组,需要size参数,否则是随机整数,而不是数组
np.random.randint(3)
# 1
np.random.randint(3,size=3)
# array([0, 2, 1])
可以(下界,上界,数目)来产生制定范围的数组
np.random.randint(5,7,4)
# array([6, 6, 5, 5])
3 随机抽样和打乱
这个功能就很实用了,用以在可迭代对象中随机抽选一个元素。打乱则是打乱原有对象的元素顺序。
抽样涉及random.sample sample.choice函数
a = [1,2,3,4,5,6,7]
b="qwetuireyowi!@$%"
random.choices(a)
# [4]
random.choices(b)
# ['!']
抽样可以抽取多个样本,使用sample
a = [1,2,3,4,5,6,7]
b="qwetuireyowi!@$%"
random.sample(a,3)
[1, 5, 2]
random.sample(b,3)
['e', 'w', 'u']
打乱的话在random.shuffle 和 numpy.shuffle都可以是实现,两者允许互相操作:
# 操作list测试
a=[1,2,3,4,5,6,7]
random.shuffle(a)
# [1, 5, 7, 2, 6, 3, 4]
np.random.shuffle(a)
# [4, 1, 3, 6, 2, 7, 5]
# 操作numpy的array测试
c = numpy.range(4)
# [0 1 2 3]
random.shuffle(c)
#[4 1 3 2]
np.random.shuffle(c)
#[2 3 4 1]
4 list和array转换
有时候需要将array和list互相转换,这时候可以
# list转array
list1 = [1,2,3,4,5]
np.array(list1, dtype = int) # dtype设定元素类型
# array([1, 2, 3, 4, 5])
# array转list
narray = np.zeros(5,dtype=int)
narray.tolist()
# [0, 0, 0, 0, 0]