让我们先来看一段代码,熟悉一下seed()的使用:

import numpy as npnum = 0
while (num < 5):np.random.seed(1)print(np.random.random())num += 1print('-------------------------')num1 = 0
np.random.seed(2)
while (num1 < 5):print(np.random.random())num1 += 1

其运行结果是:

0.417022004702574
0.417022004702574
0.417022004702574
0.417022004702574
0.417022004702574
-------------------------
0.43599490214200376
0.025926231827891333
0.5496624778787091
0.4353223926182769
0.42036780208748903

通过上面的两个例子的对比我们可以发现:第一个例子中打印的随机数的一样的,但是第二个例子中打印的是不同的随机数,这是为什么呢?

其实啊,所谓的随机数其实是伪随机数,所谓的‘伪’,意思是这些数其实是有规律的,只不过因为算法规律太复杂,很难看出来。但是在复杂的算法都要一个初始值,如果没有一个初始值,他也不能凭空制造一系列的随机数出来,那我们说的随机种子seed()就是这是初始值。

让我们看看random随机数是怎么生成的:我们将这套复杂的算法(是叫随机数生成器吧)看成一个黑盒,把我们准备好的种子扔进去,它会返给你两个东西,一个是你想要的随机数,另一个是保证能生成下一个随机数的新的种子,把新的种子放进黑盒,又得到一个新的随机数和一个新的种子,从此在生成随机数的路上越走越远。

现在来看看代码:
第一段代码把对种子的设置放在了循环里面,每次执行循环都旗帜鲜明地告诉黑盒:“我的种子是1”。那么很显然:同一个黑盒,同一个种子,自然得到的是同一个随机数。

第二段代码把对种子的设置放在了循环外面,他只在第一次循环的时候明确地告诉黑盒:“我的种子是2”。那么也很显然:从第二次循环开始,黑盒用的就是自己生成的新种子了。

另外再说一下:所有标准库提供的Random函数其实都是假Random,提供的随机数也是伪随机数,真正的Random函数式不需要Seed的。所谓假Random,是指所返回的随机数字其实是一个稳定算法所得出的稳定结果序列,而不是真正意义上的随机序列。 Seed就是这个算法开始计算的第一个值。所以就会出现只要seed是一样的,那么后续所有“随机”结果和顺序也都是完全一致的。 通常情况下,你可以用 DateTime.Now.Millisecend() 也就是当前始终的毫秒来做Seed .因为毫秒对你来说是一个1000以内的随即数字。 这样可以大大改善保准库的Random结果的随机性。 不过这仍然算不上是完全随机,因为重复的概率还是千分之一。

总之如果种子没有变,产生的随机数就不会变的。

随机种子 seed()到底是怎么回事。相关推荐

  1. python编程中,各种随机种子seed设置总结

    python随机种子seed的作用(强化学习常用到)_汀.的博客-CSDN博客先上代码import mathimport gymfrom gym import spaces, loggerfrom g ...

  2. Pytorch分布式训练/多卡训练(二) —— Data Parallel并行(DDP)(2.2)(代码示例)(BN同步主卡保存梯度累加多卡测试inference随机种子seed)

    DDP的使用非常简单,因为它不需要修改你网络的配置.其精髓只有一句话 model = DistributedDataPrallel(model, device_ids=[local_rank], ou ...

  3. 随机种子 seed()

    先来看一段代码,熟悉一下seed()的使用: import numpy as npnum = 0 while (num < 5):np.random.seed(1)print(np.random ...

  4. tensorflow随机种子seed

    随机种子seed起到固定初始值的作用 import tensorflow as tf# tf.set_random_seed(1) A1 = tf.random_uniform([1]) A2 = t ...

  5. 关于随机种子seed()的一点理解

    先上一段熟悉的代码: import numpy as np num=0 while(num<5):np.random.seed(1)print(np.random.random())num+=1 ...

  6. python随机种子seed的作用(强化学习常用到)

    先上代码 import math import gym from gym import spaces, logger from gym.utils import seeding import nump ...

  7. 如何理解“伪随机”以及“随机种子”

    "真随机"与"伪随机" 真随机:就是我们传统意义上理解的"随机",随机事件如今天是否下雨,抛硬币的正反面,家门口的十字路口今天发生车祸等等. ...

  8. linux 系统时间date vcs根据时间产生随机种子

    前言 2023.3.20 首先介绍时间,再介绍如何根据时间产生随机种子 一.date date:用来显示或设定系统的日期与时间 使用方法:date [OPTION]... [+FORMAT] 1.OP ...

  9. 验证中的随机种子(seed),VCS

    1 Verilog中的随机种子 在Makefile文件中需要加入: SEED=$(shell date+%s) ./simv+plusargs_save+seed=$(SEED) 2 VCS支持自动随 ...

最新文章

  1. python:ElementTree操作XML
  2. Interesting Finds: 2008.03.17
  3. HDOJ 1018(阶乘位数)
  4. PMAboutView
  5. dos定义变量算术运算逻辑运算表达式分隔符
  6. 【Linux】/dev/null 21 详解
  7. hibernate---id生成策略
  8. 拼音表大全图_语文汉语拼音教学指导方法|拼音教学游戏大全
  9. 计算机文化基础说课ppt,计算机文化基础说课 -_图文.ppt
  10. SharePoint 2013 SqlException (0x80131904):找不到Windows NT 用户或组xxxx\administrator
  11. 武汉适合几月份去旅游 武汉必去景点
  12. ios申请企业开发者账号的代理_苹果企业开发者账号的申请详解
  13. 深入理解示波器探头各种作用及工作原理
  14. Android X86系统(Remix OS 与 Phoenix OS对比使用)
  15. 入门分析,多线程竞争为何不安全?
  16. 【面经】触宝算法工程师一面
  17. 洛谷P2556 [AHOI2002]黑白图像压缩(简单模拟题)
  18. 留言板代码 php js,原生JS实现留言板功能
  19. 戴维营教育2015年iOS暑期班笔试面试基础考核题
  20. 模拟模拟交易系统(四)——数据库设计

热门文章

  1. C语言文件之程序文件和数据文件
  2. OnDraw()和OnPaint()
  3. 开源自主导航小车MickX4(一)ROS底盘硬件
  4. python中的matplotlib绘图
  5. 基于python爬虫的岗位数据分析以拉勾网为例_爬虫小实例-拉勾网数据分析岗位...
  6. 使用.net 操作 微信公众平台 —— 接收用户操作 —— 关注/取消关注 公众号
  7. 黑莓8700软件_莓友shadywb分享:我眼中的黑莓
  8. 电脑卡,电脑卡到不行?原因和解决方法都在这里了!
  9. 谷歌seo工具有哪些
  10. 使用echarts生成漂亮的3D地图