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

Ruby 如何使用Array#sample(n,random:rng)语法?,ruby,syntax,random,ruby-1.9.3,Ruby,Syntax,Random,Ruby 1.9.3,的文档说明它可能需要rng: 如果给定rng,它将用作随机数生成器 一个范围如何能作为一个随机数发生器,或者为什么这样的东西有用 此外,哈希表表明还有其他选择,但我找不到任何关于它们的信息。正在尝试[1,2,3,4,5]。示例(3)的行为与[1,2,3,4,5]一样。示例(3,随机:1..2)参数应该是随机数生成器(RNG) 如果没有提供,则默认为“stock”Ruby实现 它可以替换为任意RNG,就像一个完全不是随机的: class NotAtAllRandom def self.rand

的文档说明它可能需要
rng

如果给定rng,它将用作随机数生成器

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


此外,哈希表表明还有其他选择,但我找不到任何关于它们的信息。正在尝试
[1,2,3,4,5]。示例(3)
的行为与
[1,2,3,4,5]一样。示例(3,随机:1..2)
参数应该是随机数生成器(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]

我猜你可以使用随机数生成器作为随机数的附加源(如硬件设备),它可以提供比Ruby内置的RNG更好的熵是一种计算或物理设备,用于生成一系列没有任何模式的数字或符号,即随机出现。。。我仍然不明白,使用
#sample
方法的第二个可选参数的目的是什么。如果你现在很好,你能告诉我,这个场景的用例吗?@ArupRakshit如Koraktor所说,或者如果你想使用你自己的,等等。误读rng的范围,而不是随机数生成器,尝试过,没有意义。谢谢,你把它清理干净了。@steenslag我想它看起来确实有点像射程;我不清楚你为什么认为它是一个范围。我的解释器坏了。