我如何从数组中随机选取多个项目,其中我可以确保元素的重复被考虑。Array#sample
不适合,因为它只 * 似乎 * 选取一组唯一的元素:
>> array = (1..5).to_a
=> [1, 2, 3, 4, 5]
>> 10.times.map { array.sample(2) }
=> [[4, 2], [5, 4], [5, 2], [1, 4], [2, 3], [1, 4], [4, 1], [4, 5], [3, 1], [3, 1]]
...
我可以做下面的事情来确保重复,但是我想确认是否有更好的方法来考虑重复的元素拾取。
random_value_1 = array.sample
random_value_2 = array.sample
谢谢你的时间!
5条答案
按热度按时间u3r8eeie1#
要从数组中获取
n
个可能重复的随机元素,除了或者如果你从一系列
真的不需要一个内置的方法来实现这一点;这并不常见,上面的文字非常清晰。
vx6bjr1n2#
Array#sample
设计用于根据文档选择唯一索引:元素是通过使用数组中的随机和唯一索引**来选择的,以确保元素不会重复,除非数组中已经包含了重复的元素。
因此,在我看来,你能做的最好的事情就是分别挑选2个样本:
soat7uwm3#
如果希望有重复的可能性,为什么不使用
rand
呢?如果希望所选内容是显式数组元素,请使用
ary[rand(ary.length)]
vm0i2vca4#
注意
pick
仅为this_array定义。3hvapo4f5#
可能的结果,例如