Random#rand 和 Kernel#rand 之间真的有区别吗?
从我可以看到他们使用不同的'C'函数。
它看起来像一个稍微不同的 API,但两者似乎都将实际生成留给了genrand_real函数。
当用 a 调用时,它们的行为相同Range,但在其他几种情况下则不同。
Random#rand
raises ArgumentError,而Kernel#rand只是表现得好像你用n(by (-n).to_int.abs)调用它。Random#randraises ArgumentError,而
Kernel#rand只是表现得好像你在没有任何参数的情况下调用它。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。