python基础2:随机数生成—random模块、numpy中的random函数

20200209

前言:继续做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())  #查看数据类型    
random.random()

2、random模块——random.uniform(a,b)

作用:随机生成一个 [a,b) 的浮点数

random.uniform(7,20)

type(random.uniform(7,20)) #查看数据类型
random.uniform(a,b)

3、random模块——random.randint(a,b)

作用:随机生成一个 [a,b] 的整数

random.randint(99,100)
type(random.randint(99,100))
random.randint(a,b)

4、random模块—— random.choice(sequence)

作用:从列表,元组,字符串、集合(可用于for循环的数据类型)中随机选择一个元素

random.choice('Bob')
random.choice([3,4,11,30,100])
random.choice(('Michael', 'Bob', 'Tracy'))
random.choice(sequence)

5、random模块—— random.randrange(a,b,step)

作用:在生成的<以a为始,每step递增,以b为终>这样的一个整数序列中随机选择一个数

random.randrange(2,12,3)
random.randrange(a,b,step)

random.randrange(a,b,step)

6、random模块——random.shuffle(a)

作用:打乱一个列表的元素顺序

a = ['Michael', 'Bob', 'Tracy']
random.shuffle(a)
print(a)
random.shuffle(a)

7、random模块——random.sample(self, population, k)

从序列population中随机取出k个数;population的类型可以是列表、元组、集合、字符串;

a = ['Michael', 'Bob', 'Tracy','xiaoming','age','school']
print(random.sample(a, 2))
random.sample(self, population, k)

二、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))
np.random.randn()

备注:标准正态分布是以0为均数、以1为标准差的正态分布,记为N(0,1)。对应的正态分布曲线如下所示,即


image.png

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))
np.random.rand()

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的数组

numpy.random.randint()

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]))
np.random.random([size])

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)))

np.random.random([size])

关于numpy中的random函数先总结到这,大家可以参考文章numpy之random库简单的随机数据生成,这篇文章用到的函数更多,里面介绍了6种,这里总结了5种我们常用的方法。

参考文档1:【python】numpy之random库简单的随机数据生成.rand()、.randint()、.randn()、.random()等(一)
参考文档2:Python中随机数的生成
参考文档3:numpy.random模块常用函数

终于写完了,我以为它很简单的………………预计1小时,结果写了2.5小时

你可能感兴趣的:(python基础2:随机数生成—random模块、numpy中的random函数)