伪原创生成工具哪种好(1.随机数到底怎么生成的python中的“伪随机”)

优采云 发布时间: 2021-09-29 04:26

  伪原创生成工具哪种好(1.随机数到底怎么生成的python中的“伪随机”)

  这里讨论的随机*敏*感*词*适用于随机模块,numpy,火炬等,我们将以随机模块为例。

  1.如何生成随机数

  python中的随机数其实就是所谓的“伪随机数”,它的产生并不是完全无迹可寻的。伪随机数*敏*感*词*通过对“某个值”执行一系列操作来获得伪随机值。通常,这个“某个值”来自前一个随机数*敏*感*词*生成的值。但是,当你打开一个新程序时,并没有之前的伪随机数*敏*感*词*生成的值,那么系统会为你设置一个初始值(可能基于日期、时间等,这可以认为是不可能的推断),通过这个值,你可以一直走下去。

  

  2.为什么是“伪随机”

  从上图我们可以看出,1的值是由当时的系统环境决定的,我们能不能控制这个值1呢?答案是肯定的。

  我们可以使用函数 random.seed() 为值 1 设置一个值,使其成为所有后续值的“*敏*感*词*”

  我们来看下面的例子(两个例子都是在python3.x环境下):

  

  当我在windows系统上使用9001作为*敏*感*词*时多次运行伪随机*敏*感*词*(random.randint)时,会得到这样一个序列(1, 5, 5, 2, 10).

  

  当我在Linux系统上使用9001作为*敏*感*词*时多次运行伪随机*敏*感*词*(random.randint)时,会得到这样一个序列(1, 5, 5, 2, 10).

  通过这个例子,我们可以发现

  1. 将值设置为1(即随机*敏*感*词*)后,整个随机序列就已经确定了。这就是所谓的“伪”。

  2. 请注意,上面例子中的第五和第六个伪随机数*敏*感*词*(random.randint),它们接收到的“某个值”都是5,但是生成的数字是不同的(一个是5。一个是2)。这就是所谓的“随机”

  3.为什么要设置随机*敏*感*词*

  想象一下这种情况,我们已经为两个随机操作的程序完成了A和B的两个版本,那么如果我们要比较A和B的性能,由于程序内部的随机性,我们直接比较很难解释问题.

  所以如果我们在程序开始时为 A 和 B 设置相同的随机*敏*感*词*,那么比较就会很容易,并且保证了内部随机操作。

  这只是一个例子。一般来说,设置一个随机*敏*感*词*,让我们的比较和复现非常直观。

  4.设置随机*敏*感*词*

  import random, torch

import numpy as np

seed = 9001

random.seed(seed)

torch.manual_seed(seed) #CPU

torch.cuda.manual_seed(seed) #GPU

np.random.seed(seed)

  参考链接:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线