为什么 numpy 和 random 模块为同一种子给出不同的随机数?

2023-12-04

对于相同的种子,为什么 random.random() 与 numpy.random() 相比会产生不同的随机值。我的理解是他们都使用 Mersenne Twister 来生成随机值。

import random as rnd
import numpy as np

rnd.seed(1)
np.random.seed(1)

rnd.random()
np.random.rnd()

0.13436...

0.41702...


random 模块和 numpy.random 都使用 mt19937 来生成随机数。因此,我们可以将一个生成器的状态复制到另一个生成器,以查看它们是否具有相同的底层实现。

import random as rnd
import numpy as np

# seed numpy
np.random.seed(1)

# get state from numpy
state = [int(s) for s in list(np.random.get_state()[1])]
state.append(624)
state = tuple(state)
state = (3, tuple(state), None)

# set state for python 
rnd.setstate(state)

print(rnd.random())
print(np.random.rand())

0.417022004702574

0.417022004702574

如果手动将状态设置为相同,则使用的 mt19937 引擎看起来会给出相同的结果。这似乎意味着种子函数的实现方式不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 numpy 和 random 模块为同一种子给出不同的随机数? 的相关文章

随机推荐

  • 使用给定的时间增量对时间序列进行重采样

    我正在使用 Pandas 来构建和处理数据 这是我的数据框 我想要对时间序列数据进行重新采样 并且对于每个 ID 此处命名为 3 从开始到结束 beginning time end time 的所有比特率分数 例如 对于第一行 我希望拥有从
  • 将值减去多行

    好吧 我陷入了需要将值分配到多行的地步 由于我不知道具体的术语 我将其以下面的示例的形式以便更好地理解 假设 x 的值为 20 我需要将其按降序分配 减去到行中 TABLE ID Value1 1 6 2 5 3 4 4 3 5 9 结果应
  • 将逗号后的数字四舍五入为 2 位数字

    我不知道该怎么做 我正在添加逗号数字 结果当然总是一个逗号后数字太多的数字 任何人 EDIT 2 Use the Number对象的toFixed像这样的方法 var num Number 0 005 The Number only vis
  • ggplot 中的数据重新排序

    新的并坚持使用 ggplot 我有以下数据 tribe rho preference watermass 1 Luna2 1 000 hypolimnic 2 OP10I A1 1 000 epilimnic 3 B0 FO56C 0 98
  • 从 @selector 中关闭视图控制器而不创建单独的方法

    我试图通过直接从按钮执行它来关闭呈现的视图控制器 而不是为其创建一个单独的方法 但我不知道如何让它工作 或者是否可能 如有任何帮助 我们将不胜感激 我正在尝试的代码 dismissButton addTarget self action s
  • 从 SQL Server 触发器发送消息

    当 SQL Server 2005 中发生某些事情时 我需要向正在运行的应用程序 Windows 服务 发出信号 是否可以将消息从触发器发送到同一系统上的外部应用程序 您可以使用SQL 服务代理排队做你想做的事 触发器可以创建对话并在队列上
  • 如何使 DrawerLayout 显示在工具栏下方?

    如何使抽屉布局位于操作栏 工具栏下方 我正在使用 v7 21 应用程序兼容库和新的工具栏视图 我看到的例子看起来像
  • 在 pyinstaller 生成的可执行文件中使用 pyunpack 并结合 try except

    我对 pyunpack 有一个奇怪的行为 pyunpack 是一个在可执行文件内用于解包的包 我想做以下事情 我有一个 7z 类型的文件 其结尾不是 7z 而是 sent 首先 我尝试直接解压缩它 这会导致捕获预期的错误 在这个错误捕获中
  • 需要帮助优化 mysql 的纬度/经度地理搜索

    我有一个 mysql 5 0 22 myisam 表 其中大约有 300k 条记录 我想在 5 英里半径内进行纬度 经度距离搜索 我有一个涵盖纬度 经度字段的索引 并且当我仅选择纬度 经度时速度很快 毫秒响应 但是 当我选择表中的其他字段时
  • 使用原始类中的自定义 Android AnalogClock 设置时间

    我想使用互联网上提供的 Android 开源项目的 AnalogClock 源代码制作一个自定义 AnalogClock 类 我想让时钟设置我想要的时间 而不是当前时间 我没有找到关于如何执行此操作的明确示例 因此也许这篇文章会很有用 将源
  • 对汇编 x86 中的数组求和。关于输入的索引

    我在添加数组但在输入的索引上遇到一些问题 例如 用户输入 4 作为起始数组 6 作为结束数组 因此我必须循环 array 4 到 array 6 并将数字相加 我不确定是否可以在 ArraySum 过程中使用 data 中的数组 我是否必须
  • 在 jquery 中引用选择器比实际调用选择器更快吗?如果是这样,有多大区别?

    preview button click preview button slide preview button whatever 这样做是否是更好的做法 var preview button preview button preview
  • python中的reverse()用法?

    sort 和reverse 方法会在对大型列表进行排序或反转时适当修改列表以节省空间 提醒您 它们的操作有副作用 它们不会返回排序或反转的列表 上述文字可以在以下位置找到http docs python org 2 library stdt
  • 执行光线投射时 Camera.main 为 null

    生成错误的代码 void Update if Input touchCount gt 0 RaycastHit2D hit Physics2D Raycast Camera main ScreenToWorldPoint Input Get
  • Laravel 5 中未找到用户类

    我有以下问题 我刚刚从 4 2 升级到 Laravel 5 但是我首先复制到新的 Controllers 文件夹的 UserController 不起作用 它总是告诉我它不适合用户模型 当我复制它时 我的代码如下所示 用户控制器 php
  • 如果列包含逗号分隔值,则创建单独的行

    假设我们有一个简单的选择查询 它返回如下结果 FirstName LastName PayScale Craig L 150000 Alice Lisa simons 100000 所以如果我们有逗号分隔的名字 那么我想要这样的结果 Fir
  • 通过 TAB 键导航

    I m working on LAMP application In my application I m using iframe I want to navigate through my application via Tab key
  • 堆上非常大的数组 (Visual C++)

    我希望有人可以帮助我 我正在尝试使用 Visual C 2010 在我的应用程序上创建一个 int 400000000 4 亿 数组 但它会生成溢出错误 相同的代码在 Linux 上使用 g 运行 我需要这个 因为我正在处理大型矩阵 先感谢
  • 在窗口加载时逐渐淡入元素

    我希望按代码顺序淡入具有特定类的 div 每次淡入淡出可能会在最后一次淡出之后 250 毫秒 给人一种渐进页面加载的印象 我已经到了这样的地步 一下子就消失了 window load function div fade this pleas
  • 为什么 numpy 和 random 模块为同一种子给出不同的随机数?

    对于相同的种子 为什么 random random 与 numpy random 相比会产生不同的随机值 我的理解是他们都使用 Mersenne Twister 来生成随机值 import random as rnd import nump