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

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

从我所看到的,他们使用不同的’C’功能.

最佳答案 使用Range调用它们时的行为相同,但在其他几种情况下则不同.

>当使用负整数-n(如-3)调用时,随机#rand
引发ArgumentError,而Kernel#rand就像你一样
用n(by(-n).to_int.abs)调用它.
>当使用0调用时,Random#rand会引发ArgumentError,而
内核#rand就像你没有任何参数调用它一样.
>使用Float n调用时,Random#rand返回0之间的浮点数
和n(如预期的那样).内核#rand执行n.to_int.abs转换,
所以例如rand(-1.9)相当于rand(1),它总是如此
返回0; rand(0.1)相当于rand(0),因此是等价的
兰特.

对于奇怪的参数,似乎Random#rand(当然还有Random :: rand)比Kernel#rand更健壮.有关Kernel#randRandom#rand的文档的更多信息.

点赞