前言:继续做adventure项目中,最近常用python和powerbi。转行时学习项目态度是“我只需要把项目过一遍”,心急,导致基础没掌握。转行时觉得sql很简单,但在实际工作中踩很多坑,为了弥补自己sql基础,在2019年也写过很多篇该类文章,当然练习练习最重要,自己掌握不牢固的可以总结下来。
在Python中可以用于随机数生成的有两种主要途径,一是random模块,另一个是numpy库中random函数。
在我们日常使用中,如果是为了得到随机的单个数,多考虑random模块;如果是为了得到随机小数或者整数的矩阵,就多考虑numpy中的random函数,当然numpy也可以的到随机的单个数
目录:
一、random模块
二、numpy库中random函数
一、random模块
random模块中将近有7个函数都是可以用来生成随机数的:
- 1、random.random():随机生成一个 [0,1) 的浮点数
- 2、random.uniform(a,b):随机生成一个 [a,b) 的浮点数
- 3、random.randint(a,b):随机生成一个 [a,b] 的整数
- 4、random.choice(sequence):从列表,元组,字符串(可用于for循环的数据类型)中随机选择一个元素
- 5、random.randrange(a,b,step):在生成的<以a为始,每step递增,以b为终>这样的一个整数序列中随机选择一个数
- 6、random.shuffle(a):打乱一个列表的元素顺序
- 7、random.sample(self, population, k):从序列population中随机取出k个数;population的类型可以是列表、元组、集合、字符串
1、random模块——random.random()
作用:随机生成一个 [0,1) 的浮点数
import random
random.random()
type(random.random()) #查看数据类型
2、random模块——random.uniform(a,b)
作用:随机生成一个 [a,b) 的浮点数
random.uniform(7,20)
type(random.uniform(7,20)) #查看数据类型
3、random模块——random.randint(a,b)
作用:随机生成一个 [a,b] 的整数
random.randint(99,100)
type(random.randint(99,100))
4、random模块—— random.choice(sequence)
作用:从列表,元组,字符串、集合(可用于for循环的数据类型)中随机选择一个元素
random.choice('Bob')
random.choice([3,4,11,30,100])
random.choice(('Michael', 'Bob', 'Tracy'))
5、random模块—— random.randrange(a,b,step)
作用:在生成的<以a为始,每step递增,以b为终>这样的一个整数序列中随机选择一个数
random.randrange(2,12,3)
6、random模块——random.shuffle(a)
作用:打乱一个列表的元素顺序
a = ['Michael', 'Bob', 'Tracy']
random.shuffle(a)
print(a)
7、random模块——random.sample(self, population, k)
从序列population中随机取出k个数;population的类型可以是列表、元组、集合、字符串;
a = ['Michael', 'Bob', 'Tracy','xiaoming','age','school']
print(random.sample(a, 2))
二、numpy中的random函数
在Numpy库中,常用使用np.random.rand()、np.random.randn()和np.random.randint()随机函数。
- 1、np.random.randn()函数:返回一个或一组服从标准正态分布的随机样本值
- 2、np.random.rand()函数
- 3、numpy.random.randint()
- 4、np.random.random([size])
- 5、np.random.choice(a,[ size, replace, p])
1、numpy中的random函数——np.random.randn()函数
作用:返回一个或一组服从标准正态分布的随机样本值
print('=============当函数括号内没有参数时,则返回一个浮点数==================')
print(np.random.randn())
print(np.random.randn())
print(np.random.randn())
print('=============当函数括号内有1个参数时,则返回秩为1的数组,不能表示向量和矩阵==================')
print(np.random.randn(4))
print(np.random.randn(2))
print(np.random.randn(3))
print('==========当函数括号内有两个及以上参数时,则返回对应维度的数组=====================')
print(np.random.randn(4,3))
备注:标准正态分布是以0为均数、以1为标准差的正态分布,记为N(0,1)。对应的正态分布曲线如下所示,即
2、numpy中的random函数——np.random.rand()函数
作用:使用方法与np.random.randn()函数相同 ,通过本函数可以返回一个或一组服从“0~1”均匀分布的随机样本值。随机样本取值范围是[0,1),不包括1
print('=============当函数括号内没有参数时,则返回一个[0,1)浮点数==================')
print(np.random.rand())
print(np.random.rand())
print('=============当函数括号内有1个参数时,则返回秩为1的数组,不能表示向量和矩阵==================')
print(np.random.randn(5))
print(np.random.randn(3))
print('==========当函数括号内有两个及以上参数时,则返回对应维度的数组=====================')
print(np.random.randn(3,3))
3、numpy中的random函数——numpy.random.randint()
numpy.random.randint(low, high=None, size=None, dtype='l')
输入:
low—–为最小值
high—-为最大值
size—–为数组维度大小
dtype—为数据类型,默认的数据类型是np.int。
作用: 返回随机整数或整型数组,范围区间为[low,high),包含low,不包含high; high没有填写时,默认生成随机数的范围是[0,low
print("=============当没有sizec参数时,则返回一个整数==================")
print(np.random.randint(1,5))
print(np.random.randint(5))
a = np.random.randint(5)
print(type(a))
print("=============当有sizec参数为两个及以上参数时,则返回对应维度的数组==================")
print(np.random.randint(3,size =[3,6])) #返回[0,3)之间的,3行6列数组
print('--------')
print(np.random.randint(1,10,size =[2,7])) #返回[1,10)之间的,2行7列数组
print("=============当有sizec为1个参数时,则返回秩为1的数组==================")
print(np.random.randint(10,size =[8])) #返回[0,10)之间的,秩为1的数组
4、numpy中的random函数——np.random.random([size])
np.random.random([size])
作用:生成[0,1)之间的浮点数,与np.random.rand()功能类似
print('=============当函数括号内没有参数时,则返回一个[0,1)浮点数==================')
print(np.random.random())
print(np.random.random())
print('=============当函数括号内有1个参数时,则返回秩为1的数组,不能表示向量和矩阵==================')
print(np.random.random(5))
print(np.random.random(3))
print('==========当函数括号内有两个及以上参数时,则返回对应维度的数组=====================')
print(np.random.random(size = [2,4]))
5、numpy中的random函数——np.random.choice(a,[ size, replace, p])
np.random.choice(a,[ size, replace, p])
- 从给定的一维数组中生成随机数
- 参数: a为一维数组类似数据或整数;size为数组维度;p为数组中的数据出现的概率;repalce参数为是否可以重复,当设置为FALSE时,不能出现重复的数据
- a为整数时,对应的一维数组为np.arange(a)
print(np.random.choice(5,3)) #从数组np.arange(5)中选择,返回秩为1的数组
print(np.arange(5))
print('===========给数组中每个数据出现的概率赋值==========')
print(np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0]))
print(np.random.choice(5, 5, p=[0, 0, 0.4, 0.6, 0]))
print('==========从数组np.arange(5)中选择,生成一个3行3列的数组========')
print(np.random.choice(5,size=(2,6))) #从数组np.arange(5)中选择,生成一个3行3列的数组
print('==========也可以传入非数字、字符串的数组===========')
demo_list = ['lenovo', 'sansumg','moto','xiaomi', 'iphone']
print(np.random.choice(demo_list,size=(3,3)))
关于numpy中的random函数先总结到这,大家可以参考文章numpy之random库简单的随机数据生成,这篇文章用到的函数更多,里面介绍了6种,这里总结了5种我们常用的方法。
参考文档1:【python】numpy之random库简单的随机数据生成.rand()、.randint()、.randn()、.random()等(一)
参考文档2:Python中随机数的生成
参考文档3:numpy.random模块常用函数
终于写完了,我以为它很简单的………………预计1小时,结果写了2.5小时