4

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

4

4 回答 4

2

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

于 2012-10-23T20:50:18.100 回答
2

彼得是对的。然而,我们可以通过 openssl 和安全的 random 获得非常好的随机性。

代码:

 require "securerandom"
 puts SecureRandom.random_number
于 2012-10-23T20:50:33.273 回答
1

我认为您可能需要多考虑一下您的问题。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.htmlHow to get a random number in Ruby了解更多信息。

于 2012-10-23T20:52:41.120 回答
1

我在http://realrand.rubyforge.org/找到的“真实”随机数(非伪随机数)的最佳定义和来源 简而言之,它规定“真实”随机数不能由计算机和算法,它只能由自然产生。我知道说自然只是一堆算法的理论,所以我认为这是超出我水平的辩论的食物。无论如何,该站点提供了一些站点,这些站点从诸如“定时由与计算机连接的 Geiger-Müller 管检测到的连续对放射性衰变”之类的事物中生成随机数。

我对由此产生的评论和答案感兴趣,我 +1。

于 2012-10-23T20:44:44.367 回答