Ruby:Random#rand 和 Kernel#rand 之间的区别

Leo*_*aev 5 ruby random

Random#rand 和 Kernel#rand 之间真的有区别吗?

据我所知,他们使用不同的“C”函数。

Fra*_* Yu 2

当使用 a 调用时,它们的行为相同Range,但在其他几种情况下有所不同。

  1. 当使用负整数-n(如 -3)调用时,Random#rand raise ArgumentError,而Kernel#rand行为就像使用n(by (-n).to_int.abs)调用它一样。
  2. 当用0调用时,Random#randraise ArgumentError, while 的 Kernel#rand行为就好像您在没有任何参数的情况下调用它一样。
  3. 当使用Float n调用时,返回 0 和nRandom#rand之间的浮点数(如预期)。进行转换,因此例如相当于,它始终返回 0;等价于并因此等价于。Kernel#randn.to_int.absrand(-1.9)rand(1)rand(0.1)rand(0)rand

看起来Random#rand(当然也是Random::rand)比奇怪的参数更强大Kernel#rand。更多信息请参见Kernel#rand和 的文档Random#rand。