Mrli
别装作很努力,
因为结局不会陪你演戏。
Contacts:
QQ博客园

Python random

2019/09/29 机器学习 Python
Word count: 692 | Reading time: 3min

Python random

老是忘记random中每个函数之间的区别,而且常常跟numpy里的random也经常搞混,因此还是写篇文章记一下吧。

random模块

choice和sample

python中random.choice()可以从给定的可迭代对象中随机挑选出一个。

而python中random.sample()方法则可以随机地从给定的可迭代对象中提取出N个不同的元素,列表的维数没有限制。(即第二参数给出个数N)

1
2
3
4
5
6
7
8
9
10
11
import random
print(random.sample([chr(97 + x) for x in range(int(9))],2))
# 函数原型sample(self, population, k)
>>> ['e', 'c']
# ---
print( random.randint(1,10) ) # 产生 1 到 10 的一个整数型随机数
print( random.random() ) # 产生 0 到 1 之间的随机浮点数
print( random.uniform(1.1,5.4) ) # 产生 1.1 到 5.4 之间的随机浮点数,区间可以不是整数
print( random.choice('tomorrow') ) # 从序列中随机选取一个元素
# 函数原型def choice(self, seq)
print( random.randrange(1,100,2) ) # 生成从1到100的间隔为2的随机整数

shuffle

正如字面所示,也就是打乱的意思

1
2
3
4
a=[1,3,5,6,7]                # 将序列a中的元素顺序打乱
random.shuffle(a)
print(a)
>>> [1, 6, 7, 3, 5]

numpy中的random

numpy.random.choice(a, size=None, replace=True, p=None)

  • a : 如果是一维数组,就表示从这个一维数组中随机采样;如果是int型,就表示从0到a-1这个序列中随机采样。
  • size : 采样结果的数量,默认为1.可以是整数,表示要采样的数量;也可以为tuple,如(m, n, k),则要采样的数量为m * n * k,size为(m, n, k)
  • replace : boolean型,采样的样本是否要更换?这个地方我不太理解,测了一下发现replace指定为True时,采样的元素会有重复;当replace指定为False时,采样不会重复。
  • p : 一个一维数组,制定了a中每个元素采样的概率,若为默认的None,则a中每个元素被采样的概率相同。
1
2
3
4
5
6
7
8
choice(a[, size, replace, p])
>>> np.random.choice(5, 3, replace=False)
array([3,1,0])
>>> #This is equivalent to np.random.permutation(np.arange(5))[:3]
# Generate a non-uniform random sample from np.arange(5) of size 3 without replacement:

>>> np.random.choice(5, 3, replace=False, p=[0.1, 0, 0.3, 0.6, 0])
array([2, 3, 0])

np.random.randint

1
2
3
np.random.randint(2,5,size=(2,3))
# 函数原型randint(low[, high, size])
# - 返回随机的整数,位于半开区间 [low, high)。

np.random.rand

1
2
3
4
5
>>> np.random.rand(3,2)
array([[ 0.14022471, 0.96360618], #random
[ 0.37601032, 0.25528411], #random
[ 0.49313049, 0.94909878]]) #random
# 跟random_sample([size])、random([size])和ranf([size])一样

▲需要注意的是np.random.randint和random.randint的区间不同,前者左闭右开(),后者左右都是闭区间[]▲

Author: Mrli

Link: https://nymrli.top/2019/09/27/Python-random/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
numpy使用记录
NextPost >
OpenAI Gym使用、rendering画图
CATALOG
  1. 1. Python random
    1. 1.1. random模块
      1. 1.1.1. choice和sample
      2. 1.1.2. shuffle
    2. 1.2. numpy中的random