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

时间:2011-12-19 21:40:25

标签: ruby syntax random 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)一样。

1 个答案:

答案 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]