返回顶部
首页 > 资讯 > 后端开发 > Python >Python随机数种子(random seed)的使用
  • 367
分享到

Python随机数种子(random seed)的使用

2024-04-02 19:04:59 367人浏览 独家记忆

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

摘要

目录1. 随机数种子 2. numpy中的随机数种子 3. 随机数“顺序”的奥秘 在科学技术和机器学习等其他算法相关任务中,我们经常需要用到随机数,为了把握随机数的生成特性,从随机数

在科学技术和机器学习等其他算法相关任务中,我们经常需要用到随机数,为了把握随机数的生成特性,从随机数的随机无序中获得确定和秩序。我们可以利用随机数种子(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:  0
0.8444218515250481
97
9.01219528753418

0.04048437818077755
65
5.373349269065314

0.9182343317851318
38
9.710199954281542
test_random_seed_in_std_lib()
test seed:  0
0.8444218515250481
97
9.01219528753418

0.04048437818077755
65
5.373349269065314

0.9182343317851318
38
9.710199954281542
test_random_seed_in_std_lib(99)
test seed:  99
0.40397807494366633
25
6.39495190686897

0.23026272839629136
17
7.8388969285727015

0.2511510083752201
49
5.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 np
def 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随机数种子(random seed)的使用的文章就介绍到这了,更多相关Python随机数种子内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python随机数种子(random seed)的使用

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

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

猜你喜欢
  • 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随机数种子的使用方法
    本篇内容介绍了“Python随机数种子的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录 随机数种子 numpy中的随机数种子 随...
    99+
    2023-06-20
  • python随机函数random如何使用
    Python中的随机函数random可以通过导入random模块来使用。下面是几种常见的使用方法:1. 生成一个0到1之间的随机浮点...
    99+
    2023-10-10
    python
  • Python中的随机函数random怎么使用
    Python的random模块提供了许多随机数生成函数,可以用来生成随机数、随机选择等操作。下面是一些常用的random函数的使用方...
    99+
    2023-08-16
    Python random
  • Python随机数random模块使用指南
    random 模块是Python自带的模块,除了生成最简单的随机数以外,还有很多功能。 random.random() 用来生成一个0~1之间的随机浮点数,范围[0,10 >>> ...
    99+
    2022-06-04
    随机数 使用指南 模块
  • python如何使用random()生成随机数
    这篇文章给大家分享的是有关python如何使用random()生成随机数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。random()生成一个(0,1)指定范围内的随机浮点数运行结果如下:感谢各位的阅读!关于“p...
    99+
    2023-06-08
  • Python 模块:random 随机数
    Python中的random模块用于生成随机数。 使用该模块之前需要 import random 几个常用的函数用法: 1、random.random 函数原型: random.random() 用于生成一个0到1的随机符点数: 0 ...
    99+
    2023-01-30
    随机数 模块 Python
  • python中的随机数Random怎么用
    这篇文章主要介绍“python中的随机数Random怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python中的随机数Random怎么用”文章能帮助大家解决问题。一、random模块简介Py...
    99+
    2023-06-30
  • python中的随机数 Random介绍
    目录一、random模块简介二、random模块重要函数(1)random.random()函数(2)random.randint()函数(3)random.uniform()函数(...
    99+
    2024-04-02
  • Python中的随机函数random怎么用
    这篇文章将为大家详细讲解有关Python中的随机函数random怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。常规用法用法作用random()返回0<=n<1之间的随机浮点数nrando...
    99+
    2023-06-22
  • Python中的随机函数random详解
    目录常规用法使用案例:常规用法 用法 作用 ...
    99+
    2024-04-02
  • Java中的随机数Random
    一个用于生成随机数的类 具体用法:   //创建随机数对象         Random random = new Random();         //随机产生一个int类型取...
    99+
    2024-04-02
  • python中random随机函数详解
    目录一、random基础二、实数分布2.1 对称分布2.2 指数分布2.3 Beta 分布2.4 Gamma 分布2.5 高斯分布2.6 对数正态分布2.7 正态分布2.8 冯&mi...
    99+
    2024-04-02
  • Python如何生成随机数及random随机数模块应用
    目录1、随机生成0-1的浮点数random.random2、随机生成指定范围内的浮点数random.uniform3、随机生成指定范围整数random.randint4、随机从给定集...
    99+
    2024-04-02
  • Python伪随机数模块random怎么用
    这篇“Python伪随机数模块random怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python伪随机数模块ran...
    99+
    2023-06-29
  • C++11生成随机数(random库)的使用
    目录1. 随机数引擎和分布1.1 分布类型和引擎1.2 使用引擎生成一个数值序列1.3 设置随机数发生器种子2. 其他随机数分布2.1 生成随机实数2.2 生成非均匀分布的随机数在 ...
    99+
    2024-04-02
  • C#中的随机数函数Random()怎么使用
    这篇文章主要介绍了C#中的随机数函数Random()怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#中的随机数函数Random()怎么使用文章都会有所收获,下面我们一起来看看吧。一、常用操作NextD...
    99+
    2023-06-30
  • 怎么在python中使用random实现随机函数
    这篇文章将为大家详细讲解有关怎么在python中使用random实现随机函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python的数据类型有哪些python的数据类型:1. 数字类型,...
    99+
    2023-06-14
  • java随机数random怎么用
    在Java中,可以使用java.util.Random类生成随机数。以下是一些使用随机数的常见方法:1. 生成一个随机的整数:```...
    99+
    2023-08-30
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作