![](/img/trans.png)
[英]What's the difference between Random.rand(x) and just rand(x) in Ruby
[英]Ruby: Difference between Random#rand and Kernel#rand
Random#rand和Kernel#rand之间真的有区别吗?
从我所看到的,他们使用不同的'C'功能。
它看起来像一个稍微不同的API,但似乎都将实际生成留给了genrand_real
函数。
使用Range
调用它们时的行为相同,但在其他几种情况下则不同。
Random#rand
会引发ArgumentError
,而Kernel#rand
就像使用n (by (-n).to_int.abs
)调用它(-n).to_int.abs
。 Random#rand
会引发ArgumentError
,而Kernel#rand
行为就像你在没有任何参数的情况下调用它一样。 Float
n调用时, Random#rand
返回一个介于0和n之间的浮点数(如预期的那样)。 Kernel#rand
n.to_int.abs
转换,例如rand(-1.9)
相当于rand(1)
,它总是返回0; rand(0.1)
相当于rand(0)
,因此相当于rand
。 对于奇怪的参数,似乎Random#rand
(当然还有Random::rand
)比Kernel#rand
更健壮。 有关Kernel#rand
和Random#rand
文档中的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.