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