使 PRNG 跨软件达成一致

2023-11-25

我正在研究是否有可能让两组软件就生成的伪随机数序列达成一致。我对理解所有可能的分歧点感兴趣,就像我对真正找到一种方法让他们达成一致一样感兴趣。

Why?我在一家使用许多不同软件包(Stata、R、Python、SAS,可能还有其他软件包)的数据商店工作。最近,人们对通过用另一种语言复制流程来控制输出产生了兴趣。对于任何涉及随机数的过程,如果我们可以提供一系列允许两个包达成一致的步骤(“设置此选项”等),将会很有帮助。如果这不可行,我希望能够阐明失败点在哪里。

一个简单的例子:

R 和 Python 的默认随机数生成器都是 Mersenne-Twister。我将它们设置为相同的种子,并尝试从中采样并查看 PRNG 的“状态”。这两个值都不一致。

R(3.2.3,64 位):

set.seed(20160201)
.Random.seed
sample(c(1, 2, 3, 4, 5))

Python(3.5.1,64 位):

import random

random.seed(20160201)
random.getstate()
random.sample([1, 2, 3, 4, 5], 5)

老问题,但可能对未来的读者有用:正如评论中提到的,最好的选择是自己实现这个并为不同的环境提供接口,以便对于给定的种子返回相同的结果。为什么有必要?您使用“采样”作为示例。涉及几个步骤。

  1. 播种是一个不平凡的过程。例如,R 可以达到进一步争夺提供的种子。因此,除非您的用户工具使用相同的方法,否则即使用户提供相同的值,它们最终也会得到不同的种子。

  2. 实际的 RNG:即使在这两种情况下都可能使用 Mersenne-Twister,但它真的是相同的版本吗? R 使用 32 位 MT。也许 Python 使用 64 位版本?

  3. 大多数 RNG 为您提供无符号整数(现在通常为 32 或 64 位)。但是您将需要一些随机数的分布,例如为了进行采样,您需要给定范围内的随机整数。有很多方法从 RNG 生成的整数到采样所需的整数。对于 R,您甚至无法访问 RNG 的输出值。最基本的功能是R_unif它返回 [0, 1) 中的双精度值。同样,如何生成这样的双精度数是没有得到普遍同意。如果您需要其他分布函数(正态、指数等),您会发现很多不同的算法。

总体而言,在很多地方都可能出现(微妙的)差异。

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

使 PRNG 跨软件达成一致 的相关文章

  • 如何在 R 中使用 msgbox [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何在中显示消息框R 我正在寻找类似的东西msgbox在 VBA 中 因此我可以向用户发出有关问题的警报 此外 我想允许一些用户交互 例如
  • 蜘蛛内的Scrapyd jobid值

    Scrapy 框架 Scrapyd 服务器 我在获取蜘蛛内部的 jobid 值时遇到一些问题 将数据发布到后http localhost 6800 schedule json http localhost 6800 schedule jso
  • 如何从 Lua 调用 Python 函数?

    我想从我的 lua 文件运行 python 脚本 我怎样才能实现这个目标 Example Python代码 sum py file def sum from python a b return a b Lua code main lua f
  • Windows Defender 检测 Python EXE 为木马

    我制作了一个 Python 脚本 将 Windows 目录以 zip 形式邮寄给我 我使用 sched 模块添加了一个调度程序 每小时重复一次 我试图制作一个简单的同步应用程序供个人使用 在 Windows 启动时启动 我使用将其转换为 e
  • OpenCV - 我需要将彩色图像插入黑白图像并且

    我用以下代码将黑白图像插入彩色图像 没问题 face grey cv cvtColor face cv COLOR RGB2GRAY for row in range 0 face grey shape 0 for column in ra
  • 了解 asyncio 已经运行的永久循环和挂起的任务

    我在理解如何将新任务挂起到已经运行的事件循环中时遇到问题 这段代码 import asyncio import logging asyncio coroutine def blocking cmd while True logging in
  • 检测/删除 Python 2 + GTK 中不成对的代理字符

    在Python 2 7中我可以成功转换Unicode字符串 abc udc34xyz 转换为 UTF 8 结果是 abc xed xb0 xb4xyz 但是当我将 UTF 8 字符串传递给例如时 pango parse markup or
  • 在R中提取其他两个字符串之间的字符串

    我试图找到一种简单的方法来提取出现在两个已知子字符串之间的未知子字符串 可以是任何内容 例如 我有一个字符串 a lt anything goes here STR1 GET ME STR2 anything goes here 我需要提取
  • 使用 boto3 从 s3 下载时使用 filename 作为文件名

    我正在使用 boto3 上传文件 如下所示 client boto3 client s3 aws access key id id aws secret access key key client upload file tmp test
  • 如何在Python中求和

    我想知道如何在 python 中表示总和而不需要像这样的循环here http docs scipy org doc scipy reference tutorial optimize html 我们有 def rosen x The Ro
  • 在 R 中使用 ggplot2 叠加两个图

    有两个数据框 df1 df2我需要使用 ggplot2 创建线图并显示在同一个图表上 df1 x y 2 30 4 25 6 20 8 15 df2 x y 2 12 4 16 6 20 8 24 用于绘制第一个 df p1 lt ggpl
  • 使用 python 只读取 Excel 中的可见行

    我想只读取 python 中 Excel 工作表中的可见行 输入 Excel表 所以当我过滤时 作为 python 中的输出 在本例中我将仅获得可见数据 1 行 这是我的代码 from openpyxl import load workbo
  • python:是否有用于对输入流进行分块的库函数?

    我想对输入流进行分块以进行批处理 给定一个输入列表或生成器 x in 1 2 3 4 5 6 我想要一个能够返回该输入块的函数 说 如果chunk size 4 then x chunked 1 2 3 4 5 6 这是我一遍又一遍地做的事
  • PyCharm 无法识别字典值类型

    我有一个简单的代码片段 其中我将字典值设置为空列表 new dict for i in range 1 13 new dict i 现在 如果在下一行的循环内我会输入new dict i 并添加一个点 我希望 PyCharm 向我显示可用于
  • 在ggplot2中添加水平线到绘图和图例

    这段代码创建了一个漂亮的图 但我想在 y 50 处添加一条水平黑线 并让图例显示一条黑线 并在图例中显示文本 cutoff 但在图例中保留源点 我可以使用 geom line 添加该行 但无法在图例中获取该行 library ggplot2
  • 如何测试列表中多个值的成员资格

    我想测试两个或多个值是否在列表中具有成员资格 但我得到了意外的结果 gt gt gt a b in b a foo bar a True 那么 Python 可以同时测试列表中多个值的成员资格吗 这个结果意味着什么 See also How
  • 在python中安装scipy模块时出错

    我正在尝试使用 pip 在 python 中安装 scipy 模块 它显示以下错误 Command c users sony appdata local programs python python35 32 python exe u c
  • 如何可视化多维数据上的 kmeans 聚类

    我在 mnist 数据集上使用 kmeans 聚类算法 并希望可视化聚类后的图 到目前为止我做了这个 from mnist import MNIST mndata MNIST Datasets X train y train mndata
  • Matplotlib 中的 TwoSlopeNorm 未按预期工作

    我正在尝试创建一个具有发散颜色图的绘图 该颜色图在零附近不对称 In this https stackoverflow com a 20146989 6288682例如 DivergingNorm函数被使用并产生我想要的 然而 我使用的是更
  • 部署 Flask 应用程序时如何检测额外文件的更改并重新加载应用程序? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我在 Flask 中构建了一个小型 Web 应用程序 并尝试将其部署在 Pythonanywhere 上 在开发过程中

随机推荐

  • 从非管理应用程序以管理员身份运行进程

    从不以管理员身份运行的应用程序中 我有以下代码 ProcessStartInfo proc new ProcessStartInfo proc WindowStyle ProcessWindowStyle Normal proc FileN
  • AJAX 文件上传后 $_POST 和 $_FILES 为空

    我是网络开发新手 最近遇到的问题是ajax文件上传 现在我有两个 HTML 输入字段 文件输入和按钮
  • 使用 JDBC 从长字符串创建 CLOB

    我有以下查询 select id from table1 where some func 1 where some func是一个允许其参数为 VARCHAR2 或 CLOB 的函数 并且 是一些字符串 可能很长 我正在尝试使用以下代码来绑
  • 仅在 dart/flutter 中取小数

    我有一个数字 我想只取小数部分并将其转换为具有一定精度的整数 我怎样才能用 Dart 语言或 flutter 做到这一点 例如 转动这个 247 64646122587197 进入这个 6464 去掉浮点数 只取4位小数 将其转换为整数 像
  • 动态更新 NSTouchBar 以编程方式添加/删除项目

    我目前正在为我的 macOS 应用程序实现 NSTouchBar api 目前 我唯一的触摸栏将主视图控制器作为其委托 我可以向其中添加项目 问题是 我需要仅在满足特定条件 在表中选择一行 时才显示其中一些项目 假设我有一个布尔值 指示按钮
  • Mac 上是否预装了 freetype?

    我对 Mac OS X 环境比较陌生 我试图安装 freetype 库来在 OpenGL 中显示文本 但失败了 我在一些论坛上读到 Mac OS X mountain lion 预装了 freetype 我只是想确认这一点 如果 Mac 确
  • Java TreeSet 与长度比较器错误?

    我有下面的代码 它使用基于字符串长度的比较器创建一个 TreeSet public class TreeSetComparator public static void main String args SortedSet
  • Laravel 中的数据库播种是什么?

    我使用 Laravel 框架 最近我被告知有一个名为database seeding它为我们的测试生成一个假数据集 我的理解正确吗 嗯 这很奇怪 怎么运行的 它如何知道我需要数据库X列中哪种类型的数据 以及它是如何产生的 另外 我不能制作我
  • 如何在Python中将列表转换为带空格的字符串?

    如何在 Python 中将列表转换为空格分隔的字符串 例如 我想转换这个列表 my list how are you 到字符串中 how are you 空间很重要 我不想得到 howareyou join my list 您需要使用空格而
  • 是否可以创建一个扩展方法来格式化字符串?

    这个问题很简单 我们如何在 C 中格式化字符串 这边走 string Format string goes here with placeholders like 0 1 firstName lastName 现在 是否可以创建一个扩展方法
  • git - 精心挑选的功能提交到新分支,恢复提交,变基未按预期工作

    我最近不得不从我们的 开发 分支中删除一个功能 因为它被搁置到稍后的日期 为此 我创建了一个分支 其父级位于第一个功能提交之前的 dev 上 第一个功能提交是来自另一个分支的压缩合并 然后 我将所有功能提交从 dev 挑选到新分支 最后 我
  • mysql:后缀搜索的有效方法(如“%text”又名前缀通配符)?

    MySQL 中是否有任何内置功能可以在不扫描整个表的情况下执行上述操作 我找到的唯一解决方案是存储我想要比较的列的镜像版本并执行like txet 我也没有看到绕过后缀搜索的方法 这是一本德语词典 许多单词都有带前缀的版本 例如用户搜索 G
  • s[i] - '0' 是什么意思?

    以下代码来自 K R 教科书 第 71 页 val 10 0 val s i 0 什么是s i 0 意思是这里 看起来s是字符数组或指向字符数组第一个元素的指针 和元素s i 包含代表数字的字符 例如 5 要转换此字符 例如在 ASCII
  • LinearProgressIndicator 动画 Flutter

    我正在尝试创建一个带有页面滑块轮播和进度栏的页面 当轮播移动到另一个页面时 我希望进度条通过动画从一个值更新为另一个值 我试过LinearProgressIndicator但我不知道如何将动画从旧值设置为新值 这就是我所拥有的 Linear
  • 是否为地址从未使用过的静态常量变量分配了内存?

    如果我从不使用静态常量变量的地址 那么在使用相当现代的编译器时是否会为其分配内存 这取决于type变量的含义 以及 常量 是否也意味着 常量表达式 例子 static const Foo get foo std cin static con
  • Ruby on Rails 和 Heroku 问题

    git push heroku master 我基本上收到这个错误消息 error src refspec master does not match any error failed to push some refs to email
  • Symfony FOSUserBundle - 在布局模板中包含登录表单

    我们已经成功配置了 FOSUserBundle 登录 注册 重置密码等一切正常 现在我们希望将登录表单合并到我们的常规站点布局中 特别是将表单放置到布局标题的右上角部分 如果我们只处理用户名和密码字段 那么这样做就很容易了 但是我们似乎不知
  • 如何使用正则表达式检测 CTRL+C 和 CTRL+V 按键?

    I have blocked all aTOz character input for my text field using regular expression in my JavaScript but as I have blocke
  • 从注入脚本到带有响应的内容脚本的通信

    下列的这个问题 注入脚本和内容脚本之间的通信可以这样进行 Content script window addEventListener getChromeData function data do Chrome things false I
  • 使 PRNG 跨软件达成一致

    我正在研究是否有可能让两组软件就生成的伪随机数序列达成一致 我对理解所有可能的分歧点感兴趣 就像我对真正找到一种方法让他们达成一致一样感兴趣 Why 我在一家使用许多不同软件包 Stata R Python SAS 可能还有其他软件包 的数