如何在ruby1.9.3中获得真正的随机数?

时间:2012-10-23 20:05:41

标签: ruby random gem

问题出在标题中。有没有宝石可以做到这一点?试过RealRand,但似乎它对我不起作用。也许我做错了什么?

4 个答案:

答案 0 :(得分:2)

Ruby 1.9引入了一个名为Random的类,它基于一个名为Mersenne Twister的算法生成伪随机数。对于个人层面的实际应用,这应该足够了。

答案 1 :(得分:2)

彼得是对的。但是我们可以使用openssl和secure random获得非常好的随机性。

代码:

 require "securerandom"
 puts SecureRandom.random_number

答案 2 :(得分:1)

我在http://realrand.rubyforge.org/找到的“真实”随机数(非伪随机数)的最佳定义和来源 简而言之,它规定“真实的”随机数不能通过计算机和算法进行处理,它只能由自然界生成。我知道有些理论认为大自然只是一堆算法所以我认为这是超出我的水平的辩论的食物。在任何情况下,该网站都会提供一些网站,这些网站可以生成随机数字,例如“通过与计算机连接的Geiger-Müller管检测到的连续放射性衰变对计时”。

我对这会产生什么评论和答案感兴趣,我来自+1。

答案 3 :(得分:1)

我想你可能需要多考虑一下你的问题。在0和1之间有更多的实数,然后在负无穷大和无穷大之间存在整数。在实数look上给维基百科关于基数的文章。

但是,您可以轻松生成范围和精度内的真实随机数。假设您想生成一个介于0和1之间的实数随机数,精度为16位。

r = Random.new
r.rand
=> 0.7182182166496581 

您可以调整此解决方案以生成-10到10之间的实数。

 r.rand(-10.0..10.0)
 => 7.00152804654363 

查看http://www.ruby-doc.org/core-1.9.3/Random.htmlHow to get a random number in Ruby了解详情。