如何使用 rand-int 生成可重复的随机序列

2023-12-29

我希望能够使用生成可重复的数字rand在 Clojure 中。 (具体来说,我想要调用的结果rand-nth或Incanter的sample可重复,这些称为rand-int这又调用rand).

我想通了这个问题 https://stackoverflow.com/questions/22441860/why-doesnt-repeatedly-generate-reproducible-random-numbers-when-using-a-seed-in如果我使用 clojure.data.generators,我可以重置随机状态:

(require '[clojure.data.generators :as gen])
(alter-var-root #'gen/*rnd* (constantly (java.util.Random. 437)))
(gen/reservoir-sample 5 (range 1000)) ; => [940 591 636 12 755]
(gen/reservoir-sample 5 (range 1000)) ; => [376 540 827 307 463]
; reset random state:
(alter-var-root #'gen/*rnd* (constantly (java.util.Random. 437)))
; now the same results are generated again:
(gen/reservoir-sample 5 (range 1000)) ; => [940 591 636 12 755]
(gen/reservoir-sample 5 (range 1000)) ; => [376 540 827 307 463]

然而,该方法似乎只影响 clojure.data.generators 中的函数,这并不奇怪:

(alter-var-root #'gen/*rnd* (constantly (java.util.Random. 437)))
(rand) ; => 0.9372552374760151
(rand) ; => 0.2712729314667742
; reset random state:
(alter-var-root #'gen/*rnd* (constantly (java.util.Random. 437)))
; not same results as before:
(rand) ; => 0.630238593767316
(rand) ; => 0.426744420572015

我怎样才能恢复随机状态以获得可重复的结果rand?到目前为止我还没有找到任何关于此的文档。

(另一个问题 https://stackoverflow.com/questions/22429778/re-bind-a-random-number-generator-in-clojure听起来好像可能是同一个问题,但它询问的是完全不同的事情。)


可能不是最干净的方法,但你可以通过重新定义使其工作clojure.core/rand:

(ns clojure.core)

(def r (java.util.Random. 1))

(defn rand
  ([] (.nextDouble r))
  ([n] (.nextInt r n)))

(take 10 (repeatedly #(rand-int 10)))

每次我运行它时都会产生 (5 8 7 3 4 4 4 6 8 8) 。

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

如何使用 rand-int 生成可重复的随机序列 的相关文章

随机推荐

  • 学习C,需要“Greedy”CS50解决方案的一些帮助

    我对 C 很陌生 我有 python 背景 我想知道我的代码哪里出了问题 我正在做cs50贪心问题 我的代码有什么问题吗 它适用于某些数字 但其他数字则不起作用 我试图从用户那里获取输入 询问要回馈多少零钱 然后计算我可以仅使用 25 10
  • 使用 Bundler 和 Rails 4 将开发精华从生产中移除

    Problem 我们部署的应用程序具有开发依赖项 我们有很多开发依赖 这会增加生产中的工件大小和内存消耗 因为所有这些依赖项都是require d 大多数实例都部署在云中 因此更大的实例更多的内存 更多的钱 我们希望减少大小 内存 并在已部
  • Bootstrap 中心垂直和水平对齐

    我有一个页面 其中仅存在表单 并且我希望将表单放置在屏幕中央 div class container div class row justify content center align items center div div
  • 为什么这种隐式转换的使用不起作用?

    我定义了一个通用类 Lazy
  • 使用 PreferenceActivity 时刷新首选项视图

    我试图强迫PreferenceActivity刷新 有谁知道如何做到这一点 我有一个ResetDefaultsPreference子类的类Preference并且 当单击时 应该将其键以特定前缀开头的所有首选项重置为默认值 它有效 但是当我
  • iOS - 尝试播放 mp3 文件失败

    我正在尝试播放从我的应用程序的服务器检索的 mp3 文件 执行以下操作 IBAction play UIButton sender dispatch queue t downloadQueue dispatch queue create a
  • 使用 Python 将 .csv 文件分成块

    我有一个超过 300 GB 的大型 csv 文件 我想将其分成每个 100 000 000 行的较小文件 每行大约有 55 60 字节 我写了以下代码 import pandas as pd df pd read csv path to r
  • 模态视图控制器和 DefinePresentationContext 的问题

    我使用以下命令创建了一个自定义容器视图控制器新的 UIViewController 容器视图控制器方法 http developer apple com library ios documentation uikit reference U
  • Google Analytics 上是否有设置禁止尚未同意的用户使用 cookie

    根据欧盟电子隐私指令 又名 Cookie 法 第 5 3 条 针对欧盟用户的网站在设置 Cookie 之前必须获得用户的选择同意 See ICO 指导 http www ico gov uk media documents library
  • 在 R Shiny Dashboard 中的反应函数中返回数据帧

    使用闪亮的仪表板 ui r server r 和多个包含函数的 r 脚本 基本问题是 我有两个数据集带入 server r 中 并将它们传递给准备 清理数据集的函数 然后将它们绑定在一起并应返回完整的数据帧 数据帧应该是反应性的 这是我到目
  • python scipy/numpy 中的多项式 pmf

    scipy numpy 中是否有内置函数用于获取多项式的 PMF 我不确定是否binom以正确的方式概括 例如 Attempt to define multinomial with n 10 p 0 1 0 1 0 8 rv scipy s
  • rustup 将自身安装到哪里?

    我明白那个rustup安装rustc and cargo二进制文件到 cargo bin 但是它安装在哪里rustup可执行到 据我所知 任何文档中都没有对此进行解释 并且运行安装程序也不会告诉您 如果可能的话 我想避免将其安装到除我的主目
  • ASP.NET 代码块(例如 <%= %>)在页面生命周期中何时执行?

    当我对整个页面进行数据绑定时 我会执行以下操作 巴拉巴拉 这效果很好 但是 我通常不会对整个页面使用数据绑定 而是以 经典 ASP NET 方式编写内容 例如 在后面的代码中我将有类似的内容 lblSomeMessage Text Some
  • 在表单的 clean 方法期间读取文件数据

    所以 我正在努力实现答案我之前的问题 https stackoverflow com questions 2798670 processing file uploads before object is saved 这是我的模型 class
  • Visual Studio 2010 警告:未指定的错误(HRESULT 异常:0x80004005 (E_FAIL))

    我看到很多关于此错误的帖子 但似乎都与我的情况无关 我有一个小型解决方案 包含 2 个 winforms 应用程序和一个数据访问 DLL 我使用的是 VS2010 SP1 当我在 Vista Business 32 位 SP1 笔记本电脑上
  • 如何使用引导网格映射图像数组?

    我正在使用 gatsby js 构建一个投资组合网站 所有照片都发布在 WordPress 中 由 graphQL 获取并渲染到网站 我正在尝试使用 bootstrap grid 来组织照片并使其响应 但是因为 graphQL 返回一个数组
  • 为整个应用程序创建一个公共对象

    我创建了一项活动 用于创建用户个人资料并存储其信息 例如姓名 ID 个人资料图片等 该信息是唯一的 应该在应用程序的所有活动中使用 我想知道创建一个存储所有信息并在所有活动中使用它的通用对象的最佳方法是什么 我已阅读有关捆绑包和 JSON
  • Python - 使用 SAML 2.0 登录站点

    我很难找到资源来帮助我解决我遇到的问题 我有一个使用 SAML 2 0 保护的网站 有人可以向我指出显示如何使用 SAML 2 0 登录站点的资源吗 大多数 python 模块似乎都与实现 SAML 2 有关 我只需要登录到实现 SAML
  • 如何解析 REST 服务的 POST 参数?

    看来我还有另一个 JSON 问题 这次是在发布到 REST 服务时 我在用Flask Restful api add resource Records rest records
  • 如何使用 rand-int 生成可重复的随机序列

    我希望能够使用生成可重复的数字rand在 Clojure 中 具体来说 我想要调用的结果rand nth或Incanter的sample可重复 这些称为rand int这又调用rand 我想通了这个问题 https stackoverflo