Array#sample
的文档说它可能需要rng
:
如果给出了rng,它将被用作随机数发生器。
范围如何作为随机数生成器,或者为什么这样的东西有用?
哈希表单也表明还有其他选项,但我找不到任何关于它们的信息。尝试[1,2,3,4,5].sample(3)
就像[1,2,3,4,5].sample(3, random: 1..2)
一样。
答案 0 :(得分:8)
参数应该是随机数生成器(RNG)。
如果没有提供,则默认为“stock”Ruby实现。
它可以替换为任意RNG,就像一个完全没有随机的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]