问题在标题中。有什么宝石可以做到这一点吗?试过RealRand,但似乎对我不起作用。也许我做错了什么?
4 回答
Ruby 1.9 引入了一个名为 的类Random
,它基于一种名为 Mersenne Twister 的算法生成伪随机数。对于个人层面的实际使用,这可能就足够了。
彼得是对的。然而,我们可以通过 openssl 和安全的 random 获得非常好的随机性。
代码:
require "securerandom"
puts SecureRandom.random_number
我认为您可能需要多考虑一下您的问题。0 到 1 之间的实数比负无穷和无穷大之间的整数要多。看看关于实数基数的维基百科文章。
但是,您可以轻松地生成范围和精度内的实随机数。假设您想生成一个介于 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.html和How to get a random number in Ruby了解更多信息。
我在http://realrand.rubyforge.org/找到的“真实”随机数(非伪随机数)的最佳定义和来源 简而言之,它规定“真实”随机数不能由计算机和算法,它只能由自然产生。我知道说自然只是一堆算法的理论,所以我认为这是超出我水平的辩论的食物。无论如何,该站点提供了一些站点,这些站点从诸如“定时由与计算机连接的 Geiger-Müller 管检测到的连续对放射性衰变”之类的事物中生成随机数。
我对由此产生的评论和答案感兴趣,我 +1。