iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python随机数种子的使用方法
  • 242
分享到

Python随机数种子的使用方法

2023-06-20 18:06:12 242人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容介绍了“python随机数种子的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录 随机数种子 numpy中的随机数种子 随

本篇内容介绍了“python随机数种子的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

目录
  • 随机数种子

  • numpy中的随机数种子

  • 随机数“顺序”的奥秘

在科学技术和机器学习等其他算法相关任务中,我们经常需要用到随机数,为了把握随机数的生成特性,从随机数的随机无序中获得确定和秩序。我们可以利用随机数种子(random seed)来实现这一目标,随机数种子,可以使得引入了随机数的整个程序,在多次运行中得到确定的,一致的结果。

很多博文谈到随机数种子,只是简单论及,利用随机数种子,可以每次生成相同的随机数。想真正用好掌握它,对此很容易产生疑惑,生成相同的随机数数怎么个相同法?随机数种子又作何用处?

1. 随机数种子

下面我们从实例中揭开随机数种子的神秘面纱:

import random# print(help(random))def test_random_seed_in_std_lib(seed=0, cnt=3):    random.seed(seed)    print("test seed: ", seed)    for _ in range(cnt):        print(random.random())        print(random.randint(0,100))        print(random.unifORM(1, 10))        print('\n')test_random_seed_in_std_lib()test seed:  00.8444218515250481979.012195287534180.04048437818077755655.3733492690653140.9182343317851318389.710199954281542test_random_seed_in_std_lib()test seed:  00.8444218515250481979.012195287534180.04048437818077755655.3733492690653140.9182343317851318389.710199954281542test_random_seed_in_std_lib(99)test seed:  990.40397807494366633256.394951906868970.23026272839629136177.83889692857270150.2511510083752201495.777313434770537

通过两次运行以上程序,我们得到相同的结果,这说明了以下几点:

  1. 在确定了一次随机数种子后,随机数函数,无论任何分布任何类型,在多次重复调用中(for循环)生成的随机数不同;

  2. 当再次声明相同的随机数种子时(第二次调用test_random_seed_in_std_lib函数,random.seed(seed)这一行),随机数将从“头”开始, 按相同的顺序生成随机数。这里的“头”,即是random.seed(seed)声明后,随机数函数的首次调用;

  3. 若指定不同的随机数种子(seed=99),无论任何随机数函数,生成的随机数将不同于,之前的(随机数种子为0)的运行结果。

  4. 上面的几点解释了随机数种子可以使得每次生成相同随机数的具体含义。这里的相同,其实还有一种更普遍的内涵,即环境独立和跨平台。上面的实验,在任何电脑或主机,运行以上代码,可以复现完全一致的结果。

以上几点囊括了随机数种子的基本特性,下面我们来对numpy中的随机数种子作进一步的拓展研究。

2. numpy中的随机数种子

import numpy as npdef test_numpy_random_seed(seed=0, cnt=3):    np.random.seed(seed)    print("test numpy seed: ", seed)    for _ in range(cnt):        print(np.random.random())        print(np.random.randn(1, 5))        print(np.random.uniform(1, 10, 5))        print('\n')

多次运行以上的test_numpy_random_seed函数,你可以观察到与使用random模块时相似的情形,进一步验证了我们总结的关于随机数种子的特性。

此外,我们可以对多维随机数组做一些有益的探索:

def test_mult_shape(seed=0):    np.random.seed(seed)    print(np.random.randn(1, 3))    print(np.random.randn(1, 2))    np.random.seed(seed)    print(np.random.randn(2, 5))test_mult_shape()[[1.76405235 0.40015721 0.97873798]][[2.2408932  1.86755799]][[ 1.76405235  0.40015721  0.97873798  2.2408932   1.86755799] [-0.97727788  0.95008842 -0.15135721 -0.10321885  0.4105985 ]]

运行test_mult_shape函数,我们发现,设定相同的随机数组,两次运行两个一行的多维正态分布的结果,与一次运行两行的多维正态分布的结果的第一行完全相同。

这个结果,说明了对相同类型的随机数分布,形状特征不会影响分布的生成秩序,程序中,np.random.randn(1, 2),这一行不像是第二次运行多维正态分布的随机数组,它"几乎"是后缀于它的前一行一次性生成的。

3. 随机数“顺序”的奥秘

至此,我们对随机数生成顺序有了初步印象,但是这里的顺序,其实比我们的朴素观察更复杂,我们来进一步考察这一点。

def test_numpy_random_seed_order(seed=0):    np.random.seed(seed)    print(np.random.random())    # print(np.random.randint(1, 10))    print(np.random.randn(1, 5))    np.random.seed(seed)    print(np.random.randn(2, 5))test_numpy_random_seed_order()0.5488135039273248[[ 0.74159174  1.55291372 -2.2683282   1.33354538 -0.84272405]][[ 1.76405235  0.40015721  0.97873798  2.2408932   1.86755799] [-0.97727788  0.95008842 -0.15135721 -0.10321885  0.4105985 ]]

运行以上程序,我们看到,设定了相同的随机数种子,np.random.randn(1, 5)看起来是第一次运行多维正态分布数组,实际上并不是,np.random.randn(2, 5)才是真正的第一次运行多维正态分布随机数组。

这说明,前面的np.random.random()对np.random.randn产生了干扰,使得这次正态分布的随机数组中的任何一个数,都不在np.random.randn(2, 5)中,这样它显示了一种不可把握的随机性。

我们可以把这一点考察得更加深入一点:

def test_numpy_random_seed_order_further(seed=0, randint_high=10):    np.random.seed(seed)    print(np.random.randint(1, randint_high))    print(np.random.randn(1, 5))    np.random.seed(seed)    print(np.random.randn(2, 5))test_numpy_random_seed_order_further()6[[ 0.11849646  0.11396779  0.37025538  1.04053075 -1.51698273]][[ 1.76405235  0.40015721  0.97873798  2.2408932   1.86755799] [-0.97727788  0.95008842 -0.15135721 -0.10321885  0.4105985 ]]test_numpy_random_seed_order_further(randint_high=5)1[[ 1.12279492  0.30280522  0.07085926  0.07304142 -1.42232584]][[ 1.76405235  0.40015721  0.97873798  2.2408932   1.86755799] [-0.97727788  0.95008842 -0.15135721 -0.10321885  0.4105985 ]]

紧接上面对随机数干扰项对考察,我们看到,这次我们改变了干扰项随机数生成器,np.random.randn(1, 5)的生成结果不同于test_numpy_random_seed_order中同一行的运行结果。

另外,两次设置不同的randint的右边界,np.random.randn(1, 5)生成的结果也全然不同,这说明了np.random.randint设置不同的参数,即是全然不同的随机数发生器。这一点,也不难在其他类型的随机数分布中得到验证。

Python随机数种子的使用方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Python随机数种子的使用方法

本文链接: https://www.lsjlt.com/news/298952.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python随机数种子的使用方法
    本篇内容介绍了“Python随机数种子的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录 随机数种子 numpy中的随机数种子 随...
    99+
    2023-06-20
  • Python随机数种子(random seed)的使用
    目录1. 随机数种子 2. numpy中的随机数种子 3. 随机数“顺序”的奥秘 在科学技术和机器学习等其他算法相关任务中,我们经常需要用到随机数,为了把握随机数的生成特性,从随机数...
    99+
    2024-04-02
  • python中的随机数种子seed()用法说明
    目录python随机数种子seed()栗子1栗子2随机种子的详解什么是随机种子?随机种子计算随机数的计算方法python随机数种子seed() 栗子1 import numpy as...
    99+
    2024-04-02
  • Python中的np.random.seed()随机数种子问题及解决方法
    目录1. 何为随机数种子2. np.random.seed()参数问题3. 使用方法4. 随机数种子问题总结 前言: 最近在学习过程中总是遇到np.random.seed()这个问题...
    99+
    2024-04-02
  • python中如何在多维数组中使用随机数种子
    这篇文章将为大家详细讲解有关python中如何在多维数组中使用随机数种子,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。说明运行test_mult_shape函数,设定相同的随机数组,两次运行...
    99+
    2023-06-20
  • python中随机数种子的特性是什么
    python中随机数种子的特性是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。说明1、在多次重复调用中生成的随机数不同,随机数函数无论任何分布任何类型,在确定了一次随机...
    99+
    2023-06-20
  • php随机数种子什么意思
    PHP是一种流行的服务器端脚本语言,被广泛应用于网站开发中。在PHP中,随机数生成常常用于各种情景下的数据处理需求。然而,随机数生成并不是100%纯粹的随机,而是通过一些预设的算法和种子生成数值的。在这篇文章中,我们将深入探讨随机数种子在P...
    99+
    2023-05-14
  • numpy产生随机数的几种方法
    目录1.np.random.rand 生成一个0到1之间的均匀分布2.np.random.randn 返回一个符合标准正态分布的数组。3.np.random.randint返回一定范...
    99+
    2023-02-10
    numpy 产生随机数 numpy 生随机数
  • Java 随机数的获得方法(5种)
    1. Math.random() 静态方法 产生的随机数是 0 - 1 之间的一个 double,即 0 ...
    99+
    2023-10-25
    java 开发语言
  • Pytorch常用的4种随机数生成方法
    Pytorch常用的4种随机数生成方法 一、torch.rand():构造均匀分布张量的方法二、torch.randn():构造标准正态分布张量的方法三、torch.randint():构造区...
    99+
    2023-09-21
    pytorch python 随机数
  • 使用numpy生成随机数的方法
    numpy是一个在Python中非常常用的科学计算库,它提供了许多快速、高效的数值操作和数据处理函数。在numpy中,我们可以很方便地生成随机数。本文将介绍numpy中生成随机数的方法,并给出具体的代码示例。 numpy中生成随...
    99+
    2024-01-26
    Numpy 随机数
  • 为什么使用相同的种子会得到不同的随机数?
    问题内容 我正在使用具有以下 mwe 的 numpy 随机数生成器: import numpy as np np.random.seed(40) print(np.random.ran...
    99+
    2024-02-22
  • golang随机数的两种方式
    golang支持两种随机数生成方式: math/rand          // 伪随机crypto/rand   &nb...
    99+
    2024-04-02
  • Pytorch随机数生成常用的4种方法汇总
    目录一、torch.rand():构造均匀分布张量的方法二、torch.randn():构造标准正态分布张量的方法三、torch.randint():构造区间分布张量的方法四、tor...
    99+
    2023-05-20
    python随机数生成 python生成随机 pyhon随机生成数字
  • C++产生随机数的几种方法小结
    目录使用cstdlib库1)使用srand()撒一个种子2)使用rand()产生随机数3)控制随机数范围4)示例代码使用random库:c++11 random library随机数...
    99+
    2023-03-09
    C++产生随机数 C++ 随机数
  • python生成随机数、随机字符、随机字符串的方法示例
    本文是基于Windows 10系统环境,实现python生成随机数、随机字符、随机字符串: Windows 10 PyCharm 2018.3.5 for Windows ...
    99+
    2024-04-02
  • PyTorch 如何设置随机数种子使结果可复现
    由于在模型训练的过程中存在大量的随机操作,使得对于同一份代码,重复运行后得到的结果不一致。 因此,为了得到可重复的实验结果,我们需要对随机数生成器设置一个固定的种子。 CUDNN c...
    99+
    2024-04-02
  • php产生随机数的两种方法实例代码 输出随机IP
    分享下php生成随机数的三种方法,生成1-10之间的不重复随机数,php生成不重复随机数的例子,需要的朋友参考下。 如何用php生成1-10之间的不重复随机数? 例1,使用shuff...
    99+
    2022-11-21
    php 随机数
  • Python中生成随机数据的方法
    这篇文章主要讲解了“Python中生成随机数据的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中生成随机数据的方法”吧!随机性有多随机大多数用 Python 生成的随机数据在...
    99+
    2023-06-30
  • oracle随机函数使用的方法是什么
    Oracle数据库中可以使用dbms_random包提供的函数来生成随机数。其中常用的函数有: dbms_random.valu...
    99+
    2024-04-30
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作