Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
生成符合Ruby中概率分布的数字数组?_Ruby_Algorithm_Prng_Sciruby - Fatal编程技术网

生成符合Ruby中概率分布的数字数组?

生成符合Ruby中概率分布的数字数组?,ruby,algorithm,prng,sciruby,Ruby,Algorithm,Prng,Sciruby,假设我有100条记录,我想模拟在日期创建的_,以便它符合某些曲线。是否有一个库可以做到这一点,或者我可以使用什么公式?我认为这是同一条轨道: 我不太了解它们在数学中是如何分类的,但我正在研究以下方面: 钟形曲线 对数典型生物学/进化曲线? ... 只是在代码中寻找一些公式,所以我可以这样说: 给定100条记录,时间跨度为1.5周,间隔为12.5小时 设置每个记录的创建位置,使其大致符合曲线 非常感谢 更新 我发现了一个R/Ruby桥,这让我想到了,但这似乎太多了 更新2 我写了这个小片段尝试gs

假设我有100条记录,我想模拟在日期创建的_,以便它符合某些曲线。是否有一个库可以做到这一点,或者我可以使用什么公式?我认为这是同一条轨道:

我不太了解它们在数学中是如何分类的,但我正在研究以下方面:

钟形曲线 对数典型生物学/进化曲线? ... 只是在代码中寻找一些公式,所以我可以这样说:

给定100条记录,时间跨度为1.5周,间隔为12.5小时 设置每个记录的创建位置,使其大致符合曲线 非常感谢

更新

我发现了一个R/Ruby桥,这让我想到了,但这似乎太多了

更新2

我写了这个小片段尝试gsl库,到达那里


您可以生成实际上只是整数的UNIX时间戳。首先确定您想何时开始,例如现在:

start = DateTime::now().to_time.to_i
找出你的休息时间应该在什么时候结束,比如说1周后:

finish = (DateTime::now()+1.week).to_time.to_i
Ruby用来生成随机数。它几乎是统一的。然后在两者之间生成随机数:

r = Random.new.rand(start..finish)
然后将其转换回日期:

d = Time.at(r)
这看起来也很有希望:

这也是:

来自:

有两种方法可以解决这个问题 根据一个随机数生成一个随机数 概率密度函数。这些 方法包括转换一个统一的 以某种方式随机数。因为 这,这两种方法同样好用 在生成伪随机和 真随机数

一种称为的方法涉及集成多达 面积大于或等于 随机数应该是多少 在0和1之间生成了正确的 分配

第二种方法称为 , 包括选择x和y值,以及 测试x的功能是否正确 大于y值。如果是,, 接受x值。否则 x值被拒绝,并且 算法重试

第一种方法是在您的链接问题的公认答案中使用的方法:

我最近遇到了一个ruby gem,它旨在根据各种统计分布生成数字

我还没有尝试过,但它听起来很有希望。

另一个选择是下一代创业板。您可以通过以下方式生成正常数字:

require 'distribution'

rng = Distribution::Normal.rng
random_numbers = Array.new(100).map { rng.call }

其他各种发行版也有RNG。

但这不适合特定的发行版请参见上面添加的链接-它们看起来很有用我使用它在ruby中生成随机正常数据,这非常好。