常用的几个随机函数random和choice

在python中,有random和np.random两个包中包含众多随机函数,尤其是sample和choice,2个包中的存在很大差异,于是在此记录一下。

1. random包中的函数

random包是python自带的随机函数库,使用较多的时其中的2个函数(random.samplerandom.choice)
示例如下:

  1. random.sample:该函数用于从给定总体(population)中无重复地选出k个样本
import random
# 原型:
# random.sample(population, k)
# 从给定的population(总体)中无重复地选择k个样本

random.sample(range(10), 3)

# 输出
# [2, 0, 6]
  1. random.choice:从给定seq中选择1个样本
import random
# 原型:
# random.choice(seq)
# # 从给定seq中选择1个样本

random.choice(range(10))

# 输出
# 9

2.np.random中的函数

  1. np.random.sample(size):生成形状为size的[0,1)均匀分布的随机序列。(这个有点违反主观直觉,相比于random.sample来说的话)
import numpy as np

np.random.sample((2, 3))
# 输出
# array([[0.79389098, 0.57137389, 0.1527349 ],
#        [0.15176632, 0.33051235, 0.03054083]])
  1. np.random.choice(a, size, replace):从a中采样得到形状为size的数组,replace用于控制是否是可重复采样。
# 原型:np.random.choice(a, size, replace)
# 两种使用方法:
# 1.a为int,返回range(a)序列,从中选择size个
# 2.a为seq,从seq中选择size个
# replace控制被采样序列a中的值是否可重复

import numpy as np

# 从[0, 10)中选出6个数字排列成(2, 3)的形式,每个数字都不可重复
np.random.choice(10, (2, 3), replace=False)

# 输出
# array([[0, 5, 9],
#        [1, 2, 8]])

# -----------------------------------------------------------
import numpy as np

# 从[0, 10)中选出6个数字排列成(2, 3)的形式,每个数字可重复
np.random.choice(10, (2, 3), replace=True)

# 输出
# array([[9, 3, 7],
#        [7, 4, 8]])

# -----------------------------------------------------------
import numpy as np

# 从[1, 3, 5, 7, 9, 10]中选出3个数字,每个数字可重复
np.random.choice([1, 3, 5, 7, 9, 10], 3, replace=True)

# 输出
# array([ 5, 10, 10])

其他的几个函数就不给出代码示例了,说明一下:

  • 生成[0,1)随机分布的size个数字(注意:乍一看这个和np.random.sample一毛一样,但是区别在于random生成的是随机分布的,sample生成的数据是均匀分布的)
np.random.random(size)
  • np.random.random()的升级版,可以更加方便地生成多维数据
np.random.rand(d0, d1, d2, ...)
  • 随机生成正态分布的数字序列
np.random.randn(d0, d1, d2, ...)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值