7

的文档Array#sample说它可以采取rng

如果给出了 rng,它将被用作随机数生成器。

范围如何用作随机数生成器,或者为什么这样有用?

哈希表还表明还有其他选项,但我找不到任何关于它们的信息。尝试的[1,2,3,4,5].sample(3)行为就像[1,2,3,4,5].sample(3, random: 1..2).

4

1 回答 1

8

参数应该是一个随机数生成器 (RNG)。

如果未提供,则默认为“stock”Ruby 实现。

它可以用任意 RNG 替换,比如完全不是随机的:

class NotAtAllRandom
  def self.rand(x=0)
    0
  end  
end  

> (1..10000).sample(3, random: NotAtAllRandom)
=> [1, 2, 3]
> (1..10000).sample(3, random: NotAtAllRandom)
=> [1, 2, 3]
于 2011-12-19T21:51:39.853 回答