种子洗牌可以逆转吗?

2023-12-04

采用这个函数,它是一个有种子的 Fisher-Yates 洗牌(顺序是随机的,但在给定相同种子的情况下可以重现):

function seeded_shuffle(array &$items, $seed = false) {
    $items = array_values($items);
    mt_srand($seed ? $seed : time());
    for ($i = count($items) - 1; $i > 0; $i--) {
        $j = mt_rand(0, $i);
        list($items[$i], $items[$j]) = array($items[$j], $items[$i]);
    }
}

这个算法可以逆转吗?即,给定种子值和打乱后的数组,该数组是否可以“打乱”为其原始顺序?如果是这样,怎么办?

(问题出现了在这里的评论中.)


事实证明答案是肯定的,而且非常简单:

function seeded_unshuffle(array &$items, $seed) {
    $items = array_values($items);

    mt_srand($seed);
    $indices = [];
    for ($i = count($items) - 1; $i > 0; $i--) {
        $indices[$i] = mt_rand(0, $i);
    }

    foreach (array_reverse($indices, true) as $i => $j) {
        list($items[$i], $items[$j]) = [$items[$j], $items[$i]];
    }
}

只需使用已知种子生成相同的随机数序列,然后反向遍历即可。

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

种子洗牌可以逆转吗? 的相关文章

  • PDO 和 MySQL 全文搜索

    我正在将所有站点代码从使用 mysql 函数转换为 PDO 关于 PDO 的 PHP 文档对于我的需求来说并不清楚 它为您提供了可以使用的功能 但没有详细解释它们在不同场景下的情况 基本上 我有一个 mysql 全文搜索 sql SELEC
  • Ajax 调用 contentType: 'application/json' 不起作用

    我有一个 ajax 调用 它将表单数据发送到 php 函数 因为我读了很多使用contentType application json 这是最佳实践 我也想尝试一下 但不幸的是 我的脚本在使用时没有返回任何内容 如果我删除它 脚本就会执行它
  • Ajax 刷新后的事件监听器

    我的网站上有一个结帐部分 我在数量部分运行此事件侦听器 以便每次根据单击的产品更新数量时 整个 div 都会使用 AJAX 重新加载 因此所有价格 总金额也会刷新 该代码可以工作一次 但之后该功能就不再工作了 cart product qu
  • php 错误地将字符串中的 ¬ 转换为 Ø

    我需要在 PHP 中组成一个简单的字符串 它是要发布到另一个站点的数据字符串 问题是其中一个字段是 notify url 当我使用该字段时 PHP 将其前面的 和 not 部分表示逻辑运算符 AND NOT 并将其转换为 字符 string
  • 将 bcrypt 密码哈希从 PHP 迁移到 Python - ValueError:无效的 hashed_pa​​ssword salt

    我有一个 PHP7 应用程序 它可以像这样对用户密码进行哈希处理 hash password hash password PASSWORD BCRYPT 例如 如果我通过test1234为此 我有 2y 10 aazE9OUKZlOQiM6
  • C++11 中 std::array 大小为零是否有原因?

    考虑以下代码 C 11 编译器完全可以接受它 include
  • 奇怪的 500 内部服务器错误(firebug、php、display_errors、ajax)

    在一页上我正在进行多个 AJAX 调用 所有调用均成功返回响应 但最后一个调用 与其他 ajax 调用无关 返回 500 内部服务器错误作为响应代码 如 firebug 所示 但是 尽管存在错误代码 该 AJAX 调用仍会返回正确的内容 令
  • 使用 PHP 将对象插入 Google Cloud Storage

    说实话 我对缺少使用 PHP 的 Google Cloud Storage 文档感到非常沮丧 我在这里 Stackoverflow 找到的大部分内容都已经过时了 这是我的尝试 postbody array data gt file get
  • 如何从 PHP 访问表单的“名称”变量

    我正在尝试创建一个 BMI 计算器 这应该允许人们使用公制或英制测量单位 我意识到我可以使用隐藏标签来解决我的问题 但这之前曾困扰过我 所以我想我会问 我可以使用 POST variableName 查找提交的变量名字段值 但是 我不知道或
  • 查找所有具有相同值的数组键

    当值未知时 是否有一种更简单的方法来获取具有相同值的所有数组键 The problem with array unique是它返回唯一的数组 因此它找不到唯一的值 例如 从这个数组 Array a gt 1000 b gt 1 c gt 1
  • 从数值中获取颜色值

    我需要一个项目从值中获取颜色 我解释说 我有日期 每个数据必须用颜色表示 红色代表最大值 蓝色代表最小值 绿色代表中间值 一种热图 所以 我需要一个返回正确颜色的函数 我尝试过这样的事情 function datatocolor min m
  • 使 Web 表单输入在各种情况下安全的正确方法是什么?

    你们都认为什么是正确的 阅读 最灵活 松散耦合 最健壮等 方法来使来自 Web 的用户输入安全地用于 Web 应用程序的各个部分 显然 我们可以为每个上下文 数据库 屏幕显示 保存在磁盘上等 使用各自的清理功能 但是是否有一些通用的 模式
  • 尝试使用 PHP GD 以固定宽度/高度生成按比例裁剪的缩略图

    我正在尝试使用 GD 在 PHP 中创建一个缩略图生成器 它将获取图像并将其缩小到固定的宽度 高度 它从原始图像中获取的正方形 基于我的固定宽度 高度 将来自图像的中心 以给出比例正确的缩略图 我将尝试用一些漂亮的 ASCII 来演示这个令
  • 550 Bad HELO - 主机冒充域名 Laravel

    我正在尝试设置 Laravel 身份验证 包括 密码重置 功能 但当我尝试发送电子邮件时 我偶然发现了一个错误 我得到的错误是 Expected response code 250 but got code 550 with message
  • WordPress ~ 如何在一页上显示多个 Google Chart?

    下面是我插入到 WordPress Visual Composer 中的原始 HTML 块中的一个 Google 图表的代码 图表 ID 名称为 chart div1 这适用于我的 WP 网页
  • Preg_split 用逗号,忽略括号,PHP

    我必须分割一个字符串 并且我想避免用括号内的逗号分割它 那么我该如何实现呢 Example string string1 sString1 sString2 ssString1 ssString2 string2 string3 resul
  • 以编程方式添加数字签名外观?

    我正在以编程方式对我的 PDF 文件进行签名 并且我想将签名外观添加到 PDF 我需要哪些对象才能实现此目的 我知道我必须Annotations BBox and XObject但我真的不知道按什么顺序以及是否需要其他东西 调试此类内容以找
  • 使用 Laravel Intervention 库缓存动态图像不起作用

    我目前正在使用 Laravel 5 并利用干预图像集成 http image intervention io http image intervention io 我动态地使用它 因此图像具有如下 URL http example org
  • 基于 ajax 的弹出窗口中的 Mathjax + CKEditor 4 + CKEditor

    我已经配置了 CKEditor 4 并且我的页面上有以下内容 我的页面中有一个 CKEditor 设置值的两个选项 这两个选项本身分别选项两个基于 ajax 的弹出窗口 这些基于 ajax 的弹出窗口包含 CKEditor 现在我有以下问题
  • PHP 插入中的 mysqli_affected_rows

    我有这个代码 if mail to subject message headers insert member sql INSERT INTO members id username VALUES id username insert me

随机推荐

  • 当使用 Python 处理一个巨大的 CSV 并突然停止时,“killed”是什么意思?

    我有一个 Python 脚本 它导入一个大型 CSV 文件 然后计算文件中每个单词的出现次数 然后将计数导出到另一个 CSV 文件 但正在发生的事情是 一旦计数部分完成并开始导出 它就会说Killed在终端中 我不认为这是一个内存问题 如果
  • 如何从 Google Earth Engine python api 迭代并下载图像集合中的每个图像

    我是 Google Earth Engine 的新手 试图了解如何使用 Google Earth Engine python api 我可以创建一个图像集 但显然getdownloadurl 方法仅适用于单个图像 所以我试图了解如何迭代并下
  • “是”报告子进程通信错误()

    我正在使用以下函数在 Python 中运行命令 def run proc cmd child subprocess Popen cmd shell True stdout subprocess PIPE stderr subprocess
  • 使用变量值调用数组元素

    我有一个字符串变量 其中包含数组的名称 我想做的是访问该数组的一个元素 并将其写入另一个变量 我怎样才能做到这一点 var sample new Array sample 0 one sample 1 two var arrayname s
  • OpenId 与桌面应用程序?

    我们正在使用来自提供商的 API 在他们的下一个版本中 他们将提供 OpenId 服务器 但大多数用户正在使用他们的桌面应用程序 我们正在构建的另一个网站将从该应用程序打开 并且我们应该与 openid 连接以访问存储在该提供程序中的资源
  • 画布 - 移动图像问题

    我的使用画布的脚本有问题 我想移动我的图像 但使用drawImage图像移动 但结果是这样的 所以 我的代码是 function desenhaBonecoDir var ctxt document getElementById camad
  • Wix 设置中的警告

    我是 Wix 工具包的新手 我正在使用 Wix Toolkit 为我的应用程序创建一项设置 但是当我尝试使用 Wix 构建它时 它显示此警告 C Users BNK Desktop wix popup setup wxs 60 警告 LGH
  • 如何在 Windows 窗体应用程序中使用此 WndProc?

    请指导我如何使用这个WndProc在 Windows 窗体应用程序中 private IntPtr WndProc IntPtr hwnd int msg IntPtr wParam IntPtr lParam ref bool handl
  • 有 C++ 的 LINQ 库吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 是否有任何与平台无关 不是 CLI 的动作可以让 LINQ 以某种方式支持 C 我的意思是 世界上很大一部分服务器框架都在 UNIX 风格上运行 并
  • 对“preg_replace():未知修饰符”进行故障排除[重复]

    这个问题在这里已经有答案了 我正在尝试实现一个开源字符串到链接转换器 但我有一个错误 坦率地说我已经尝试了所有方法 但不知道出了什么问题 这是代码 chatmessage preg replace space www a zA Z0 9 a
  • Yii 中的致命错误处理

    有没有办法通过电子邮件 记录基于 Yii 框架的项目中发生的 php 致命错误 例如 可以将 Yii 配置为通过电子邮件发送 未定义变量 错误 但致命错误只能通过单独的 未集成到框架代码中的方式进行监控 这并不理想 在 php 中 可以使用
  • 是否可以从iframe中的JS调用父文档中的Javascript函数?

    iframe 和父文档都位于同一域中 我想做的是给 iframe 中运行的 js 一个驻留在父文档中的回调函数 这可能吗 window frames testFrame org myorg events onDataReady addLis
  • 将项目导入 Git 时如何保留后续版本的日期?

    我的桌面上有一个文件夹 其中包含以下内容 SABS SABS v0 1b sabs sh SABS v0 2b sabs sh SABS v0 3b sabs sh SABS v0 4b sabs sh SABS v0 5b sabs sh
  • 如何使用 Java 代码使用 HSSF 应用单元格背景颜色

    我正在尝试根据测试用例执行状态格式化单元格背景颜色 就像如果测试用例通过了 那么单元格背景应该变成Green和文字颜色应该是White 同样 对于失败的测试用例单元格背景颜色 Red和文字颜色 White 为此 我尝试了以下脚本 背景 HS
  • 将java中的对象类更改为子类

    我想改变类的对象Car到类的对象FastCar 很容易看出 在这种情况下 main 方法返回了一个错误 我写它是为了更容易表达我的问题 如何围绕超类的对象构建子类的对象 考虑到班级可能不像下面的示例那样小 最好的方法是什么 该解决方案也应该
  • vue 中的 vuelidate 属性“$v”在渲染期间被访问,但未在实例上定义

    我正在构建一个包含 html 文件中表单的 vue 组件 需要使用 vuelidate 库验证表单 显示以下警告并且验证不起作用 Vue warn 属性 v 在渲染期间被访问 但并未被访问 在实例上定义 在 const required m
  • Matlab 中稀疏矩阵赋值变得非常慢

    我正在用来自我逐行读取的文本文件的值填充稀疏矩阵 P 230k 290k 这是 简化的 代码 while C textscan text line d delimiter EmptyValue 0 line number line numb
  • 如何抑制Excel饼图中的类别为零值?

    The data source for the Pie chart is Pivot table with values set as of column total I am able to suppress the data value
  • 抓取似乎没有 URL 的页面

    我正在尝试抓取这些列表 并在属于我的客户的网站上为这些职位列表提供更多曝光 问题是我需要能够链接到特定的职位列表以便求职者申请 这是页面我正在尝试保存来自的列表链接 如果我可以保存一个地址供求职者点击查看原始列表然后进行申请 那就太理想了
  • 种子洗牌可以逆转吗?

    采用这个函数 它是一个有种子的 Fisher Yates 洗牌 顺序是随机的 但在给定相同种子的情况下可以重现 function seeded shuffle array items seed false items array value