【问题标题】:How to use Array#sample(n, random: rng) syntax?如何使用 Array#sample(n, random: rng) 语法?
【发布时间】:2011-12-19 21:40:24
【问题描述】:

Array#sample 的文档说它可以使用rng

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

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

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

【问题讨论】:

  • 我猜你可以使用随机数生成器作为随机数的额外来源(如硬件设备),它可以提供比 Ruby 内置 RNG 更好的熵。跨度>
  • “随机数生成器 (RNG) 是一种计算或物理设备,旨在生成缺乏任何模式的数字或符号序列,即看起来是随机的。” en.wikipedia.org/wiki/Random_number_generation
  • 我也有同样的困惑......我仍然不明白,#sample 方法的第二个可选参数的目的是什么。如果你现在很好,你能告诉我这个场景的用例吗?
  • @ArupRakshit 正如 Koraktor 所说,或者如果您想使用自己的,等等。

标签: ruby syntax random ruby-1.9.3


【解决方案1】:

参数应该是一个随机数生成器 (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]

【讨论】:

  • 误读了范围而不是随机数生成器的 rng,试过了,没有意义。你把它清理干净了,谢谢。
  • @steenslag 我猜它确实有点像 range--duh;甚至没看到。
  • “我不清楚你为什么认为这是一个范围。”:'range'.tr('aeiou', '') == 'rng'.
  • @muistooshort 我的解释器坏了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
相关资源
最近更新 更多