如何使用Array#sample(n,random:rng)语法?

ste*_*lag 7 ruby random syntax ruby-1.9.3

文件Array#sample说它可以采取rng:

如果给出rng,它将用作随机数发生器.

范围如何作为随机数发生器起作用,或者为什么这样的东西有用呢?

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

Dav*_*ton 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]
Run Code Online (Sandbox Code Playgroud)