python之random库详解

1.基础random库

伪随机数:计算机中通过采用梅森旋转算法生成的(伪)随机序列元素,Python中产生随机数使用随机数种子来产生      (只要种子相同,产生的随机序列,无论是每一个数,还是数与数之间的关系都是确定的,所以随机数种子确定了随机序列的产生)

因为是标准库,使用时候只需要import random

random库包含两类函数,常用的共8个

        --基本随机函数: seed(), random()

seed(a=None)初始化给定的随机数种子,默认为当前系统时间
 random()生成一个[0.0,1.0)之间的随机小数

        --扩展随机函数:randint(), getrandbits(), uniform(), randrange(), choice(), shuffle()

randint(a,b)生成一个[a,b]之间的整数
 randrange(m,n,k)生成一个[m,n)之间以k为步长的随机整数
 getrandbits(k)生成一个k比特长的随机整数
 uniform(a,b)生成一个[a,b]之间的随机小数
choice(seq)   

从序列中随机选择一个元素 

random.choice([1, 2, 3, 4, 5, 6, 7, 8, 9])

shuffle(seq) 将序列seq中元素随机排列,返回打乱后的序列

2.numpy中的random库

常见随机数产生:

np.random.rand(d0,d1,..dn)建立d0,d1...dn维随机数数组,其元素是浮点数,[0,1)均匀分布
np.random.randn(d0,d1,..dn)建立d0,d1...dn维随机数数组,其元素是浮点数,标准正态分布
np.random.randint(low[,high,shape])根据shape创建随机整数数组,[low,high),若high=none,则为[0,low)
np.random.random_integers(low[,high,size])生成闭区间[low,high]上离散均匀分布的整数值;若high=None,则取值区间变为[1,low] 
np.random.seed(s)s是给定种子

 

a=np.random.randn(2,3)
b=np.random.randint(5,size=(2,3))

 

若要将【a,b】区间分成N等分,也可以用此函数实现
a+(b-a)*(numpy.random.random_integers(N)-1)/(N-1) 

对数组进行顺序打乱:

np.random.shuffle()

多维矩阵中,只对第一维(行)做打乱顺序操作

训练时会对样本顺序进行打乱

np.random.permutation()与shuffle类似,只是不改变原数组
np.random.choice(a[,size,replace,p])若a为数组,则从a中选取元素;若a为单个int类型数,则选取range(a)中的数
replace是bool类型,为True,则选取的元素会出现重复;反之不会出现重复
p为数组,里面存放选到每个数的可能性,即概率
a=np.random.randint(100,200,(3,4))

a
Out[102]: 
array([[115, 153, 180, 127],
       [144, 177, 175, 165],
       [147, 130, 184, 186]])

np.random.shuffle(a)

a //改变了a本身,并且是对第一维整体进行打乱
Out[104]: 
array([[147, 130, 184, 186],
       [115, 153, 180, 127],
       [144, 177, 175, 165]])

产生常见且特殊分布: 

np.random.uniform(low,high,size)产生具有均匀分布的数组
np.random.normal(loc,scale,size)产生具有正太分布的数组,loc均值,scale标准差,size形状
np.random.poisson(lam,size)产生具有泊松分布的数组,lam是随机事件发生概率,size形状

 

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值