繁体   English   中英

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

[英]Ruby: Difference between Random#rand and Kernel#rand

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

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

它看起来像一个稍微不同的API,但似乎都将实际生成留给了genrand_real函数。

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

  1. 当使用负整数-n (如-3)调用时, Random#rand会引发ArgumentError ,而Kernel#rand就像使用n (by (-n).to_int.abs )调用它(-n).to_int.abs
  2. 当使用0调用时, Random#rand会引发ArgumentError ,而Kernel#rand行为就像你在没有任何参数的情况下调用它一样。
  3. 当使用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#randRandom#rand文档中的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM