如何在 Perl 中存储伪随机生成器的状态?

2024-04-22

有没有办法在 Perl 中存储内置伪随机数生成器的当前状态,以便当我的程序再次运行时,它可以从停止的地方拾取序列,而不是从新序列开始?

现在,我正在存储我所在的位置以及初始种子,然后丢弃我已经使用类似以下内容看到的初始段:

sub consume_upto_n {
    my ($seed, $n) = @_;
    $n = 1 unless defined $n and $n >= 1;
    srand $seed;
    rand for 1 .. $n - 1;
    return;
}

例如:

srand 0x18;
my @v = map { rand } 1 .. 5;

Later:

consume_upto_n(0x18, 3);
my @z = map { rand } 3 .. 5;

Then, $z[0] == $v[2], $z[1] == $v[3] etc.


我不认为内置rand允许你这样做。但你可以使用替代品rand。例如,数学::随机::MT::自动 http://search.cpan.org/perldoc?Math::Random::MT::Auto允许您序列化它的对象 http://search.cpan.org/perldoc?Math::Random::MT::Auto#Serialization(大概包括$MRMA::PRNG,这是被其替换所使用的对象rand).

不过,我不太确定重点是什么。如果它是一个相当随机的序列,您如何判断是继续该序列还是开始一个新序列?

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

如何在 Perl 中存储伪随机生成器的状态? 的相关文章

  • Perl:安全评估?

    我很好奇是否有任何有关执行受限评估的好信息 查看文档 有一个use Safe有一个reval方法 但我不确定这有多安全 我想要做的是能够将各种条件语句作为字符串传递给函数 而无需滥用 eval 的源 例如 sub foo my stmt s
  • 在未压缩的 PDF 中进行集体内联编辑

    我有一个很大的 PDF 20mb 160mb 未压缩 我需要在其中的文本中进行查找和替换 大约 1000 次 这是我尝试过的 Via SVG 转换为 SVG inkscape 逐行读取 SVG 并在文件中进行替换 转换回 PDF gt 输出
  • 在冒号后连接行 (perl)

    我有这样的行 alpha beta beta alpha beta omega beta gamma alpha gamma alpha beta gamma epsilon alpha 我想将仅包含一个单词的行加入冒号与不包含冒号的行 a
  • 匹配嵌套的html注释块正则表达式[重复]

    这个问题在这里已经有答案了 我有这个 html 代码块 some html content here top base some html content here 1 top some html content here 2 top so
  • 我可以使用什么正则表达式来匹配以点十进制表示法表示的任何有效 IP 地址?

    我可以使用什么正则表达式来匹配以点十进制表示法表示的任何有效 IP 地址 if ip d 1 3 d 1 3 d 1 3 d 1 3 1 lt 255 2 lt 255 3 lt 255 4 lt 255 print valid n els
  • random.seed():它有什么作用?

    我有点困惑什么random seed 在 Python 中是这样的 例如 为什么下面的试验会 一致地 做他们所做的事情 gt gt gt import random gt gt gt random seed 9001 gt gt gt ra
  • 同一个字符可以有 2 种不同的 UTF-8 编码吗?

    我正在编写一个应用程序 需要将其输入从 UTF 8 转码为 ISO 8859 1 Latin 1 一切正常 除了有时我会得到一些变音字符的奇怪编码 例如 带有 2 个点的拉丁语 1 E 0xEB 通常为 UTF 8 0xC3 0xAB 但有
  • 如何以 OO 风格打开管道?

    我用新风格重写了旧代码 如下所示 old style open FD file new style fh IO File gt new file r 文件没问题 但我不知道如何打开管道 read from pipes open PIPE s
  • 有类似 Fabric for Perl 的东西吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我很喜欢Fabric http fabfile org 对于个人项目 但我的日常工作是在面向 Perl
  • 如何从类中排除某些字符?

    假设我想匹配一个 单词 字符 w 但排除 或匹配空白字符 s 但排除 t 我怎样才能做到这一点 使用包含 W 或 S 的否定类 W anything that s not a non word character and not S t a
  • 如何使用 Perl 从纯文本中提取 URL?

    我需要 Perl 正则表达式来解析纯文本输入并将所有链接转换为有效的 HTML HREF 链接 我已经尝试了在网上找到的 10 个不同版本 但没有一个可以正常工作 我还测试了 StackOverflow 上发布的其他解决方案 但似乎都不起作
  • 将文件读入 Perl 中的变量 [重复]

    这个问题在这里已经有答案了 可能的重复 在 Perl 中将文件转换为字符串的最佳方法是什么 https stackoverflow com questions 206661 what is the best way to slurp a f
  • 如何按给定顺序对列表进行排序?

    我正在尝试执行以下操作 我有一个预定义的列表 用作给定列表上的 排序依据 my orderby car boat chicken cat dog mouse or my orderby car gt 0 boat gt 1 chicken
  • STDOUT->autoflush(1) 在 Perl 中做什么?

    我找到了有关 Perl 中自动刷新的各种信息 但找不到任何提及格式完全相同的行 STDOUT gt autoflush 1 这包含在我正在分析的程序中 我想更好地了解它的作用 程序开头还有这样一段话 use IO Handle 我认为这可能
  • Perl 字符串替换:匹配但不替换正则表达式的一部分

    假设我在 Perl 中有一个字符串 我正在尝试匹配并替换为以下内容 string s a zA Z find a zA Z replace g 如图所示 我想替换两侧被非字母字符包围的所有内容 但是 当我替换字符串时 我不想也替换这些字符
  • 是否可以使用perl读取pdf文件中的文本?

    我想在 perl 中解析 pdf 文件中的文本 而不将 pdf 转换为任何其他格式 是否可以 是的你可以 看看CAM PDF http search cpan org dist CAM PDF 包裹 您可以使用此模块来提取文本 my pdf
  • 如何有效地计算 Perl 中覆盖给定范围的范围?

    我有一个大约 30k 范围的数据库 每个范围都作为一对起点和终点给出 12 80 34 60 34 9000 76 743 我想编写一个 Perl 子例程来表示一个范围 不是来自数据库 并返回数据库中完全 包含 给定范围的范围数 例如 如果
  • 如何在 Perl 中取消导入函数?

    我正在尝试删除导入的符号 以便它们不能用作对象中的方法 但是no似乎不起作用 也许我不明白不 或者还有其他方法 use 5 014 use warnings use Test More still has carp after no car
  • 如何从 Perl 调用 gnuplot 脚本

    我有一个 gnu gp 文件 grphist conf set terminal canvas Terminal type set to canvas Options are solid butt size 600 400 fsize 10
  • 如何使用 Perl 从 NCBI 获取 FASTA 核苷酸格式的基因特征?

    我可以手动下载 FASTA 文件 如下所示 gt lcl CR543861 1 gene 1 ATGCTTTGGACA gt lcl CR543861 1 gene 2 GTGCGACTAAAA 通过单击 发送到 并选择 基因特征 FAST

随机推荐

  • 如何忽略 Rails 中特定操作的真实性令牌?

    当我不想检查真实性令牌的特定操作时 如何告诉 Rails 跳过检查它 轨道 5 2 您可以使用相同的skip before action https api rubyonrails org classes ActionController
  • C# OpenFileDialog 非模态可能

    是否可以创建 拥有非模式 net OpenFileDialog 我在主对话框中有一个 UI 元素 始终需要可供用户按下 No 打开文件对话框 http msdn microsoft com en us library system wind
  • 领域未获取数据

    我在使用领域时遇到问题 findAll 和 findAllAsync 不会从领域返回任何数据 我正在像这样从主线程更新领域对象 public void updatePhoto final int ticketID realm beginTr
  • 合并多列上的两个 pandas 数据框

    我有两个数据框 gt gt gt df1 Output col1 col2 col3 col4 a abc 10 str1 b abc 20 str2 c def 20 str2 d abc 30 str2 gt gt gt df2 Out
  • Spring boot 2.0.2,使用Spring数据如何从实体验证中获取消息

    我正在构建一个 Spring Boot 2 0 2 Web 服务 实体中有许多我不想为空的字段 当尝试保留具有无效字段的实体时 如何从该特定字段获取消息 例如 我有一个实体 Entity Table name users public cl
  • 嵌入资源名称

    在C 中 嵌入资源名称的默认行为是这样的
  • 重定向后执行函数 - javascript

    好的 我的页面 MyPage 上有一个简单的按钮 可以淡出当前 div fade 1 并淡入另一个 div fade 2 我现在意识到 我可能想直接从其他地方转到该页面 淡出 2 我可以通过以下方式重定向我的页面window locatio
  • NodeJS Mongoose 总是返回一个空数组

    我尝试过使用find and findOne并且两者都没有返回文件 find返回一个空数组findOne正在返回null err在这两种情况下null以及 这是我的连接 function connectToDB mongoose conne
  • 有没有一种优雅的方法可以在 Django 管理中为 M2M 字段设置 list_filter ?

    如果我有一个披萨模型和一个浇头模型 它们之间有 m2m 是否有一些快速优雅的方法可以为它们中的任何一个添加到管理列表页面 为包含特定浇头 包含的所有浇头的所有比萨饼添加列表过滤器在某个披萨里 内置的 list filter 不支持 m2m
  • 重命名 cassandra 1.2 中的键空间和列族

    如何在 cassandra 1 2 中重命名键空间和列族 我知道不再支持 cassandra cli 重命名 api 如何在 Cassandra 中重命名键空间 https stackoverflow com questions 76491
  • 谷歌地图响应式调整大小

    我试图让谷歌地图响应并调整大小 同时在窗口调整大小时保持其中心 我阅读了其他堆栈问题 例如 响应式谷歌地图 https stackoverflow com questions 15421369 responsive google map a
  • 自动缩放但仍处理 WM_DPICHANGED

    我在使用 C 编写的非常复杂的 WinForms 应用程序时遇到了一些问题 我希望应用程序在 DPI 更改时让 Windows 自动缩放 但我仍然需要挂钩 WM DPICHANGED 事件才能缩放一些自定义绘制的文本 困境是 如果我让应用程
  • 在 R 中将因子矩阵转换为二进制(指标)矩阵的最有效方法

    我可以想到几种方法来转换这种类型的矩阵 数据框 dat data frame x1 rep c a b 100 x2 rep c x y 100 head dat x1 x2 1 a x 2 b y 3 a x 4 b y 5 a x 6
  • 为 Vim 命令行创建一个映射,在插入寄存器之前转义寄存器的内容

    假设我有一个这样的文档 并且我想搜索所有出现的 URL Vim resources http example com search q vim q q http example com search q vim 我不想完整地输入它 所以我将
  • 分配后变量的值未更新

    var a 2 var b a console log b 2 a 5 console log b 2 问 为什么即使为变量 a 分配了不同的值 变量 b 的值仍为 2 console log b 回报2因为当您访问原始类型时 您直接处理它
  • pytorch 中的 keras.layers.Masking 相当于什么?

    我有时间序列序列 我需要通过将零填充到矩阵中并在 keras 中使用 keras layers Masking 来将序列的长度固定为一个数字 我可以忽略这些填充的零以进行进一步的计算 我想知道它怎么可能在 Pytorch 中完成 要么我需要
  • 构建网站翻译文件

    我在建立网站时多次遇到这个问题 我将以使用 PHP 和 Laravel 为例进行解释 但这个问题在多个平台中都很常见 这已经在几个问题中得到了解决 post1 https stackoverflow com questions 317854
  • Doctrine Join 条件类型中WITH 和ON 有什么区别?

    我正在寻找有关学说子句的WITH 和ON 条件类型之间差异的更好解释 我发现有关此问题的文档非常糟糕 但我仍然存有疑问 在我看来 这是原则 1 的遗留物 那时ON用于重新定义关系的连接条件 而WITH用于在默认条件的基础上添加更多连接条件
  • Spark 两个分区数据帧之间的共置连接

    对于以下两个之间的连接DataFrames在 Spark 1 6 0 中 val df0Rep df0 repartition 32 col a cache val df1Rep df1 repartition 32 col a cache
  • 如何在 Perl 中存储伪随机生成器的状态?

    有没有办法在 Perl 中存储内置伪随机数生成器的当前状态 以便当我的程序再次运行时 它可以从停止的地方拾取序列 而不是从新序列开始 现在 我正在存储我所在的位置以及初始种子 然后丢弃我已经使用类似以下内容看到的初始段 sub consum