Ruby中无替换的随机抽样

时间:2017-04-21 17:13:11

标签: ruby-on-rails ruby random

ruby​​中是否有一些函数在一个范围内生成k个随机数而没有替换(重复)?

像Python中的random.sample函数,如下所示

>>> import random
>>> random.sample(range(1, 100), 3)
[77, 52, 45]

2 个答案:

答案 0 :(得分:2)

您可以创建一个范围,将范围转换为数组,然后调用Array::sample,它可以采用指定样本数的参数。

(1..100).to_a.sample(3)

答案 1 :(得分:1)

你可以用这个:

(1..100).to_a.shuffle[0..2]  #=> [13, 36, 88]

其中:

  • (1..100).to_a创建一个包含可能值的数组。
  • .shuffle随机对数组进行排序。
  • [0..2]抓住了混洗数组的前3个元素。