在 Ruby 中生成高斯(正态分布)随机数的代码

2024-01-01

在 ruby​​ 中生成正态分布随机数的代码是什么?

(注:我回答了我自己的问题,但我会等几天再接受,看看是否有人有更好的答案。)

EDIT:

为了搜索这个,我查看了两次搜索产生的 SO 上的所有页面:

+“正态分布”红宝石

and

+高斯 +随机红宝石


蟒蛇的随机.高斯() http://www.opensource.apple.com/source/python/python-3/python/Lib/random.py和升压的正态分布 http://www.boost.org/doc/libs/1_43_0/boost/random/normal_distribution.hpp两者都使用Box-Muller 变换 http://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform,所以这对于 Ruby 来说也应该足够好了。

def gaussian(mean, stddev, rand)
  theta = 2 * Math::PI * rand.call
  rho = Math.sqrt(-2 * Math.log(1 - rand.call))
  scale = stddev * rho
  x = mean + scale * Math.cos(theta)
  y = mean + scale * Math.sin(theta)
  return x, y
end

该方法可以封装在一个类中,该类一一返回样本。

class RandomGaussian
  def initialize(mean, stddev, rand_helper = lambda { Kernel.rand })
    @rand_helper = rand_helper
    @mean = mean
    @stddev = stddev
    @valid = false
    @next = 0
  end

  def rand
    if @valid then
      @valid = false
      return @next
    else
      @valid = true
      x, y = self.class.gaussian(@mean, @stddev, @rand_helper)
      @next = y
      return x
    end
  end

  private
  def self.gaussian(mean, stddev, rand)
    theta = 2 * Math::PI * rand.call
    rho = Math.sqrt(-2 * Math.log(1 - rand.call))
    scale = stddev * rho
    x = mean + scale * Math.cos(theta)
    y = mean + scale * Math.sin(theta)
    return x, y
  end
end

CC0 (CC0) http://creativecommons.org/publicdomain/zero/1.0/

在法律允许的范围内,安托纳科斯 https://stackoverflow.com/users/513598/antonakos已放弃所有版权以及相关或邻接权RandomGaussian红宝石类。本作品出版自:丹麦。

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

在 Ruby 中生成高斯(正态分布)随机数的代码 的相关文章

  • 是否可以证明序列是否是随机的?

    考虑以下输入 1 1 2 3 5 8 这不是随机的 2 4 8 16 32 这都不是 4 1 2 11 5 9 这个看起来像随机序列 我想问是否有这样的算法来证明输入是否是随机的 不 没有这样的证明 如果你有完全随机的数字 则每个长度为 n
  • ActiveRecord 嵌套 SELECT——我可以在没有手动 SQL 的情况下完成它吗?

    我有一张桌子 上面有 除其他外 一个名字和一个等级 我想返回所有唯一名称的集合 但对于返回的每个名称 我想选择排名最高的行 这很简单 有两个嵌套的 SELECT 语句 SELECT FROM SELECT FROM foo ORDER BY
  • 在 Golang 中生成固定长度的随机十六进制字符串的有效方法?

    我需要生成很多固定长度的随机十六进制字符串 我找到这个解决方案golang中如何生成固定长度的随机字符串 https stackoverflow com a 31832326 710955 我正在做这样的事情 const letterByt
  • “gem install Rails”因 DNS 错误而失败

    rvm use Using home owner rvm gems ruby 2 1 2 gem install rails ERROR While executing gem Gem RemoteFetcher FetchError Er
  • 处理rails应用程序中的rack_throttle异常

    当超出速率限制时 如何处理由rack throttle gem 生成的错误 现在我只收到包含以下内容的回复 Internal Server Error undefined method each for 403 Forbidden Rate
  • 使用 Ruby 中的 Turn_left 方法更改朝向

    我需要创建一个方法turn left来改变朝向 朝向总是从 南开始 我正在实现一个移动到木板上的机器人 所以如果我调用方法turn left应该将朝向改变为东 然后为北 然后为西 然后返回南方 我在想这样的事情 0 S 1 E 2 N 3
  • 检查 Ruby 上的浏览​​器控制台输出

    如何检查浏览器控制台是否有错误 例如 我用 Selenium 启动了浏览器 firefox 的 chrome 并且用 Selenium WebDriver 做了一些操作 之后我想知道网络控制台中是否有任何错误 我尝试接受控制台错误 例如 d
  • 学习 Ruby Hard Way 前。 48

    我正在努力学习 Ruby 并且已经完成了 Zed Shaw 的 艰难地学习 Ruby 的大部分内容 但最新的练习让我完全难住了 这是一种反向练习 让您创建一个可以通过提供的代码进行测试的类 Lexicon 您应该创建 Lexicon 以便它
  • 如何使用多个 { 'not find' } 来干燥方法?

    我正在尝试优雅地处理以下错误的 JSON 其中Hash fetch似乎不是一个选择 使用 Hash fetch 优雅地处理错误的 JSON https stackoverflow com questions 25193627 handle
  • Rails:如何重新启动 sidekiq?

    我正在使用 sidekiq gem 在后台运行 API 调用 我在守护进程中运行 sidekiq 如下所示 bundle exec sidekiq d 现在我对我的方法做了一些更改 所以我想重新启动 sidekiq 我尝试使用以下命令杀死
  • 在 Windows 中安装 RubyGems

    我是红宝石新手 我尝试按照网站中给出的步骤在我的电脑上安装 Ruby Gemshttp rubygems org pages download http rubygems org pages download 我从上述站点下载了软件包 将目
  • 缓存日期早于 1900 年的模型时出现编组错误

    我有一些具有 published on 属性的活动记录模型 当我尝试缓存 Publication on 日期早于 1900 年 1 月 1 日的模型时 出现如下错误 Marshalling error for key popular pro
  • 处理不兼容的字符编码:UTF-8 和 ASCII-8BIT

    我在生产中遇到不兼容的字符编码错误 我尝试在本地重现它 但没有成功 这是错误消息 A ActionView Template Error occurred in controller name action name incompatibl
  • 在 Ruby 文档中哪里可以找到字符串转义序列?

    我可以在 中找到有关 Ruby 转义序列的详细信息 红宝石弦 http www tutorialspoint com ruby ruby strings htm and 转义序列 http en wikibooks org wiki Rub
  • 在 Ruby 中,如何指定另一个目录中的文件作为输入?

    这可能有一个简单的答案 但我正在开发一个测试套件 它需要位于不同文件夹中的输入文件 我想使用相对路径 如下所示 graph Graph new lib test input txt 但鲁比不喜欢这样 使用这样的相对文件路径的最佳方法是什么
  • 为什么 Ruby 没有内置线程池?

    我有一个程序 它一次创建 10000 个线程 并同时运行 8 个线程 但是Ruby没有像Java那样内置ThreadPool 有充分的理由吗 可能是因为使用标准库 Queue 类很容易推出您自己的 q Queue new 3 times T
  • 固定长度的随机数

    我想生成一个 0 9 数字且长度 5 的随机整数 我尝试这样做 function genRand min max for var i 1 i lt 5 i var range max min 1 return Math floor Math
  • 拆分字符串而不删除分隔符

    我需要解析一个文件以获取单个 SQL 语句并从 Rails 控制器运行它们 我有以下代码 sql file RAILS ROOT lib evidence interface import sql sql stmts array File
  • 学习树顶

    我正在尝试自学 Ruby 的 Treetop 语法生成器 我发现 对于 最好的 文档来说 不仅文档非常稀疏 而且它的工作方式似乎并不像我希望的那样直观 从高层次上来说 我真的很喜欢比现场文档或视频更好的教程 如果有的话 在较低的层面上 这是
  • 在Python中随机交错2个数组

    假设我有两个数组 a 1 2 3 4 b 5 6 7 8 9 我想将这两个数组交错为变量 c 注意 a 和 b 不一定具有相同的长度 但我不希望它们以确定性的方式交错 简而言之 仅仅压缩这两个数组是不够的 我不想要 c 1 5 2 6 3

随机推荐

  • 如何在 Visual Studio 2010 中创建测试证书?

    我正在使用 Visual Studio 2010 我需要在 签名 选项卡中添加 测试证书 但 创建测试证书 按钮被禁用 有什么问题吗 如何激活它或如何创建测试证书 分步说明可在以下位置找到 https learn microsoft com
  • 使用 R 扩展 netCDF 文件中的维度

    我想使用 R 编写一个具有 无限 维度的 netCDF 文件 以便稍后扩展 这是我尝试过的 创建 netcdf文件 library ncdf4 define lat lon time dimensions lat lt ncdim def
  • Moxy 不尊重超类/接口属性

    enter code here我的客户属性分布在两个接口上 如下所示 我使用子接口 ICustomer 定义了外部 xml 绑定 当我将 pojo 编组到 xml 时 Moxy 似乎忽略了超级接口的属性名 这是一个错误还是我需要在 xml
  • 如何在 C# 中将 Null 值赋给 Non-Nullable 类型变量?

    正如我所声明的 双x 现在我想分配 x NULL 我该怎么做 我看过其他一些答案 但无法理解它们 这就是打开此线程的原因 您必须将其声明为可为空类型 double x x null 不可为 null 的类型 例如 double 不能为 nu
  • 为什么我必须提供默认ctor?

    如果我想创建我类型的对象数组 为什么必须提供默认构造函数 感谢您的解答 因为它们必须被初始化 考虑一下是否情况并非如此 struct foo foo int void bar void foo a 10 foo f a 0 not defa
  • JQuery - 添加 onclick 到动态生成的 img 标签

    我正在使用以下代码动态创建多个图像 function refresh gallery galleryidentifier albumid ajax type POST url Photos Thumbnails albumid data s
  • Python 2.7 - 使用 Xvfb 进行 Selenium 无头测试不起作用

    注意我已经查看了以下来源 easyprocess EasyProcessCheckInstalledError cmd Xvfb help OSError Errno 2 没有这样的文件或目录 https stackoverflow com
  • 无法在 Azure 中访问我的 X509Certificate 2 私钥

    我将我的 X509Certificate 存储在数据库中 在byte 以便我的应用程序可以检索证书并使用它来签署我的 JWT 我的 x509Certificate 是通过我在计算机上生成的 pfx 文件传递 的 但现在它作为字节字符串位于数
  • 通过 AirDrop 发送即时创建的 QR 码 UIImage 失败

    我正在动态创建一个 QR 码并将其存储为 UIImage 现在我希望能够使用 UIActivityViewController 发送它 但不知何故它失败了 func generateQRCode from string String gt
  • PHP:如何防止代码的多次执行(如果它已经在处理中)

    解释 通常需要 10 20 秒响应的 API 调用 对另一个服务 存储在数据库中 存储后 系统会立即尝试使用API 将结果显示给用户 但可能会失败 并显示失败 但我们会自动重试 因此还有一个Cron Job设置为每 30 秒运行一次并再次尝
  • RavenDB 对列表属性进行 Map/Reduce

    刚刚学习 Map Reduce 我错过了一个步骤 我读过这篇文章 使用 NET 客户端的 RavenDB Map Reduce 示例 https stackoverflow com questions 4253334 ravendb map
  • 命名参数什么时候有用?

    C 代码中是否存在位置参数不够用的情况 我真的没有看到命名参数有任何好处 相反 我可以看到过度使用命名参数会使代码难以阅读 所以我的问题是 为什么有人会使用它们以及它如何帮助编写更好的代码 因为我确信它们不是毫无理由地实现的 这对我来说看起
  • 如何在 WSO2 APIM 中处理外部/第三方 API 的外部身份验证

    我正在使用 WSO2 APIM 2 5 0 和 IS 5 6 0 它们都是集成的并且运行良好 现在 如果我在 API 管理中加入第三方 API 并使用 oauth 令牌 我就可以访问它 但问题是如何处理具有自己的身份验证的任何外部或第三方
  • const_cast 和 UB

    5 2 11 7 注 取决于 对象的类型 写操作 通过指针 左值或指针 到由 a 产生的数据成员 const cast 抛弃 a const 限定符68 may生产 未定义的行为 7 1 5 1 本节 C 03 的措辞令我惊讶 令人惊讶的是
  • 两次时间差

    我想以 hh mm 格式显示两个时间之间的差异 第一个时间来自数据库 第二个时间是系统时间 时差每秒更新一次 我怎样才能做到这一点 目前 我正在使用两个手动时间 如果效果完美 那么我会将其实施到我的应用程序中 public class Ma
  • 将星星添加到 p 值

    我计算了多个变量均值差异的 Anova F 检验 p 值 现在我想添加 星星 来指示 p 值的显着性水平 我希望 表示 10 水平的显着性 表示 5 水平的显着性 表示 1 水平的显着性 我的数据如下所示 structure list Va
  • 如果未安装应用程序,如何获取 Facebook 应用程序链接

    如果用户点击 Facebook 应用程序中的深层链接时未安装我的应用程序 如何获取应用程序链接数据 令人惊讶的是 Facebook 关于这个问题的文档很少 我有一个深层链接https fb me 635533123230265 返回 HTM
  • 在 ASP.NET MVC 组织帐户中访问 Azure AD Graph API

    我正在尝试根据登录用户的 AD 组限制页面访问 我对以下代码有问题 var tenantId incomingPrincipal FindFirst GraphConfiguration TenantIdClaimType Value cr
  • 如何在 Eclipse 中为编辑器创建大纲视图?

    我在 eclipse 中创建了一个自定义编辑器 其大纲视图显示大纲不可用 我尝试搜索此内容 发现了以下链接 常见问题解答 如何为我自己的语言编辑器创建大纲视图 http wiki eclipse org FAQ How do I creat
  • 在 Ruby 中生成高斯(正态分布)随机数的代码

    在 ruby 中生成正态分布随机数的代码是什么 注 我回答了我自己的问题 但我会等几天再接受 看看是否有人有更好的答案 EDIT 为了搜索这个 我查看了两次搜索产生的 SO 上的所有页面 正态分布 红宝石 and 高斯 随机红宝石 蟒蛇的随