寻找一种算法以(伪)随机顺序吐出数字序列

2024-02-21

假设我有一个数字序列: {n, n+1, n+2, ... n + m}

在不提前存储数字的情况下,我想创建一个函数 f(),给定序列 {1,2,3,...m} 将以随机(或至少伪随机)顺序吐出原始集合。

例如,假设我的序列是 {10, 11, 12, 13, 14, 15, 16, 17}



   f(1) could yield 14
   f(2) could yield 17
   f(3) could yield 13
   f(4) could yield 10
   f(5) could yield 16
   f(6) could yield 15
   f(7) could yield 11
   f(8) could yield 12
  

过去,一位同事向我展示了一种能够做到这一点的数学算法,但从那以后我几乎忘记了除了它存在之外的一切。我记得你必须提前拥有序列,并从序列中生成一些在函数中使用的常量。对于那些想知道的人来说,我很遗憾与那位同事失去了联系。

This 问题 https://stackoverflow.com/questions/693880/create-random-number-sequence-with-no-repeats答案看起来很接近我想要的,但我不确定答案是否允许我提前将输出限制为特定序列。


Edit:

为了澄清一点,我不想存储原始序列或打乱后的序列。我想从原始序列生成一个函数 f() 。

令人沮丧的是,我已经看到了这个,我只是记不清了,无法通过谷歌再次找到它。

Fisher-Yates 算法非常适合排列或洗牌一副牌,但这不是我想要的。


有一个简单的函数可以生成排列[0..m-1]对于给定的m。只需选择一个号码k, 互质于m然后让f(i)=(k*i) mod m。这总是生成一个排列(没有重复0<=i<m)。如果k大于m.

例如,m=20,令k=137(Python代码,%表示模数):

 >>> [(137*i) % 20 for i in range(20)]
 [0, 17, 14, 11, 8, 5, 2, 19, 16, 13, 10, 7, 4, 1, 18, 15, 12, 9, 6, 3]

这是一个非常简单的 PRNG,无法保证其统计特性。

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

寻找一种算法以(伪)随机顺序吐出数字序列 的相关文章

  • 使用多级解决方案计算二维网格中的最近邻

    我有一个问题 在 x y 大小的网格中 我提供了一个点 并且我需要找到最近的邻居 在实践中 我试图在 pygame 中找到距离光标最近的点 该点跨越颜色距离阈值 计算如下 sqrt rgb1 0 rgb2 0 2 rgb1 1 rgb2 1
  • 在常数空间中创建 1..N 的随机排列

    我正在寻找枚举固定空间中数字 1 N 的随机排列 这意味着我无法将所有数字存储在列表中 原因是 N 可能非常大 超过可用内存 我仍然希望能够一次遍历这样一个数字的排列 只访问每个数字一次 我知道对于某些 N 可以这样做 许多随机数生成器随机
  • 使用并集查找(又名不相交集)检测图是否是二分图

    我正在 Spoj 上做一个问题 基本上可以简化为检测图是否是二分图 我正在尝试使用 dfs 为图表着色 但它太慢了 有人评论这个 没有 bfs 没有 dfs 没有二部图 简单的并查集就可以做到 确实速度很快 提示 1 偶数长度的环不会影响两
  • 绘制多边形

    我正在使用 Google Maps API V3 根据路径绘制多边形 该路径是随机未排序坐标点 LatLng 的数组 这会产生以下形状 Polylines intersect Problem 由于多边形的形状取决于路径中点的顺序 因此如何对
  • 给定一个具有多个重复条目的数组,找到一个重复条目 O(N) 时间和常数空间

    我们得到了一个大小为 N 的数组 其中包含 0 到 N 2 范围内的整数 包括 0 和 N 2 该数组可以有多个重复的条目 我们需要在 O N 时间和常量空间中找到重复条目之一 我正在考虑取数组中所有条目的乘积和总和 以及 0 到 N 2
  • 具有 2 个属性的背包算法。如何在 3d 数组中实现它?

    当有超过 1 个属性时 我无法理解背包问题 当有 1 个属性时 我必须编写一个使用具有 2 个属性的背包算法的程序 老师告诉我们 它必须在 3d 数组中完成 错误的实现将导致 O 2 n 处理时间 我无法想象这样的数组会是什么样子 假设这是
  • 有 JavaScript 的微积分库吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人知道 JavaScript 的微积分库吗 我做了一些谷歌搜索 但没有想出任何东西 我申请了 Wolf
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • Java递归方法求阶乘返回负输出[重复]

    这个问题在这里已经有答案了 我知道这是溢出 但问题是 20 是相对较小的数字 这不应该发生 对吧 有没有更好的方法来查找大数 例如 1000 的阶乘 而不会得到这种奇怪的结果 public class RecursiveFunctionsE
  • 如何用约束标记一大组“传递群”?

    在 NealB解决方案之后进行编辑 与以下解决方案相比 NealB的解决方案非常非常快任何另一个 https stackoverflow com q 18033115 answers and 提出了关于 添加约束以提高性能 的新问题 Nea
  • 二维滑动窗口最小值/最大值

    假设我们得到一个大小为 NxN 的像素整数矩阵和一个整数 k 窗口大小 我们需要使用滑动窗口找到矩阵中的所有局部最大值 或最小值 这意味着 如果某个像素与其周围窗口中的所有像素相比具有最小 最大 值 则应将其标记为最小 最大 有一种著名的滑
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • CGPoint 标量乘法 Swift

    我正在 SpriteKit 中构建一个平台游戏 并将为我的实体实现更新功能 以便它们根据重力和速度移动 但是 我需要使添加的速度量与增量时间成比例 以防止帧速率影响我的实体的移动方式 因此我将导入 GLKit 以便我可以使用标量函数 但是
  • 哪些不同的术语表示相同的事物(或不同的术语,但人们认为它们表示相同的意思)? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的
  • 需要解释搜索最小大和的算法

    我正在解决 Codility 问题作为练习 但无法回答其中一个问题 我在互联网上找到了答案 但我不明白这个算法是如何工作的 有人可以引导我逐步完成它吗 这是问题 You are given integers K M and a non em
  • 如何舍入、取整、取整、截断

    如何对 jq jq 1 5 1 a5b5cbe 中的数字进行舍入 取整 取整和截断 例如 与 mass 188 72 我想 mass 188 有地板 mass 189 与天花板和圆形 舍入示例 5 52 gt 6 5 50 gt 5 or
  • 数学/算法使图像适合屏幕保留纵横比

    我需要数学 算法方面的帮助来拍摄已知尺寸的图像并适合两个屏幕尺寸之一 720 x 480 或 1280 x 1024 图像尺寸来自 XML 文件 但这些尺寸是 Web 尺寸 我还从 XML 中选择了一些图像 这些图像的分辨率可能比 Web
  • 什么是拉姆达?

    有人可以很好地描述什么是 Lambda 吗 我们为它们设置了一个标签 它们涉及 C 问题的秘密 但我还没有找到一个很好的定义和解释来解释它们是什么 闭包 lambda 和匿名函数不一定是同一件事 匿名函数是任何没有 或者至少不需要 自己名称
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 应用对数来导航树

    我曾经知道一种使用对数从树的一片叶子移动到树的下一个 有序 叶子的方法 我认为它涉及获取 当前 叶子的位置值 排名 并将其用作从根向下到新目标叶子的新遍历的种子 一直使用对数函数测试来确定是否沿着右或左节点向下到达叶子 我已经不记得如何运用

随机推荐

  • 如何将连接用作具有类型的独立对象?

    不工作的代码只是为了说明我想要实现的目标 一些连接文件 import ConnectionManager from typeorm const c new ConnectionManager user ormconfig conf file
  • 使用 spring:message 在 Spring Web 应用程序中定义表单标签属性

    我正在开发一个 Java Spring Web 应用程序 我当前面临的问题是我希望将来自 message resources 的消息显示为 HTML 中的属性
  • 使用winsock发送位图

    如何通过 winsock 发送位图而不将其保存到文件然后发送 如果您知道如何在收到数据后将数据转换回位图 这也会很有帮助 您使用什么编程语言 基本上 您必须将位图数据存储到某种字节缓冲区中 然后通过线路发送字节 并从另一端的字节缓冲区中读回
  • 如何使用 INotifyPropertyChanged 更新数组绑定?

    假设我有一堂课 class Foo public string Bar get public string this int index get 我可以使用 Binding Path Bar 和 Binding Path x 绑定到这两个属
  • 模式匹配instanceof

    我在上遇到了这个令人惊奇的话题https www baeldung com java pattern matching instanceof https www baeldung com java pattern matching inst
  • Ionic2 中的多个 $http 请求

    我想知道是否有多个请求 if my http request 1开始吧 比方说 http request 1结束并尝试打电话 http request 2 我的问题如何创建多个请求 例如 打电话 http request 1 then ht
  • 通用图像加载器重用图像

    使用通用图像加载器 是否可以直接将图像保存到磁盘并在应用程序的不同运行之间重复使用这些图像 I know imageLoader displayImage imageURI itemHolder image options 第二次从缓存中获
  • 无法打开资源文件,pygame 错误:“FileNotFoundError:没有这样的文件或目录。”

    Import pygame pygame init BG pygame image load pycache test bg jpg def DrawGameWin window blit BG 0 0 pygame display upd
  • 浏览器使用 AJAX + setInterval 不断消耗内存

    我需要使用 JavaScript 在给定的时间间隔内更新大量数据 问题是 无论我使用什么 JS 库 甚至是裸机 js 所有浏览器似乎都会在每个 AJAX 请求上分配内存 并且之后无法释放它 这是一个应该重现错误的示例片段
  • 使用 clang 优化编译时出现意外结果

    我在代码中发现了一个错误 该错误仅在启用编译器优化 O1 或更高版本时才会发生 我跟踪了该错误 似乎在启用优化时我无法在升压转换范围上使用升压 type erased 适配器 我编写了这个 C 程序来重现它 include
  • 命令行命令中的“$”是什么意思?

    我经常发现命令行命令以美元符号在安装许多东西的说明中 例如安装Ruby in Ubuntu 该网站说使用以下命令 sudo apt get install ruby full 什么是 代表 The 不是命令的一部分 它告诉您该命令需要以普通
  • 在 Ruby on Rails 中使用 mini_magick 将 pdf 转换为 png

    背景 我从 API 调用中检索了二进制形式的 pdf base 64 binary data response label generate label response response shipments response shipme
  • ASP3 和 ASP.NET 会话共享

    有没有办法在 ASP3 和 ASP NET 之间共享会话 Thanks 尽管 Microsoft 尽最大努力使 ASP 和 ASP NET 轻松共存 但有一个领域仍然是一个绊脚石 会话状态 幸运的是 ASP NET 升级的会话状态管理的优点
  • JavaScript 在 Android WebView 中不起作用

    我想通过 webView 加载 url 网址是http wapp baidu com f kw BB F0 BC FD http wapp baidu com f kw BB F0 BC FD 此页面可以在系统默认浏览器上正常工作 但在我的
  • 如何使项目浮动在 Jquery 对话框之外

    我想要一个看起来像这样的对话框 我认为这种方法可行 但我想我错了 JavaScript Creates The Dialog ImageDialogDiv dialog position 98 223 resizable false mod
  • jQuery 提交验证,最后有模式对话框?

    我现在有一个表格想要验证 假设一切都正确 我希望它弹出一个对话框确认其详细信息 这是我迄今为止的代码示例 var userConfirmed false dialog dialog buttons Yes function userConf
  • 如何理解ndarray.reshape函数?

    原型为reshape 就是它reshape shape order C 形状的类型是元组 所以我们应该用以下方式调用这个函数myarray reshape 1000 1 32 32 但是我发现很多人用myarray reshape 1000
  • 如何使 Apache mod_deflate 和 Transfer-encoding : Chunked 一起工作?

    我正在尝试在我们的网站上使用大管道概念 这意味着尝试以块的形式发送响应 而不是整体发送响应 以便用户感觉该页面很快 我通过在 java 中的响应对象上使用flushBuffer方法成功地做到了这一点 但是现在 当我尝试使用 apache m
  • 浮点到字符串:字符串长度问题

    我想将浮点值转换为字符串并创建以下简短示例 with Ada Text IO procedure Example is A constant Float 1 234 B constant Float 123 456 789 C consta
  • 寻找一种算法以(伪)随机顺序吐出数字序列

    假设我有一个数字序列 n n 1 n 2 n m 在不提前存储数字的情况下 我想创建一个函数 f 给定序列 1 2 3 m 将以随机 或至少伪随机 顺序吐出原始集合 例如 假设我的序列是 10 11 12 13 14 15 16 17 f