[Python] Random_seed(), Shuffle, Permutation

1. random_seed()函数

描述

seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数。


语法

以下是 seed() 方法的语法:

import random

random.seed ( [x] )

在调用 random.random() 生成随机数时,每一次生成的数都是随机的。但是,当我们预先使用 random.seed(x) 设定好种子之后,其中的 x 可以是任意数字,如10,这个时候,再调用它的情况下,使用 random() 生成的随机数将会是同一个结果。

另外需要注意:seed()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。


参数

  • x -- 改变随机数生成器的种子 seed。如果你不了解其原理,你不必特别去设定 seed,Python会帮你选择 seed。

返回值

本函数没有返回值。

import random

# 随机数不一样
random.seed()
print('随机数1:',random.random())
random.seed()
print('随机数2:',random.random())

# 随机数一样
random.seed(1)
print('随机数3:',random.random())
random.seed(1)
print('随机数4:',random.random())
random.seed(2)
print('随机数5:',random.random())

 2. Numpy 中的 shuffle VS permutation

有时候我们会随机打乱一个数组,例如训练集时随机打乱样本,可以使用 numpy.random.shuffle() 或者 numpy.random.permutation() 来完成。这两种函数功能非常相似,可以达到相同的目的,但到底有什么区别?


参数区别

 numpy.random.shuffle() 简称 shuffle,numpy.random.permutation() 简称 permutation。

shuffle 的参数只能是 array_like,而 permutation 除了 array_like 还可以是 int 类型,如果是 int 类型,那就随机打乱 numpy.arange(int)。

shuffle 返回 None,这点尤其要注意,也就是说没有返回值,而 permutation 则返回打乱后的 array。

实现区别

permutation 其实在内部实现也是调用的 shuffle,这点从 Numpy 的源码 可以看出来:

速度区别

10的9次幂之前,两者速度几乎没有差别,但是在10的9次幂之后,两者速度差距明显拉大,shuffle 的用时明显短于 permutation。

在 array 很大的时候还是使用 shuffle 速度更快些.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值