如何排除之前已采样的样本

时间:2016-08-10 14:06:00

标签: ruby-on-rails ruby random sample

首先,我是初学者,使用ruby-on-rails作为开发人员。 我正在使用blahblah.sample(x)从blahblah获得(x)样本。 我想要做的是,我使用循环将几个不同的数字放在一个数组中。我将使用sample方法获取(x)数字。 以下是我不想在数组中多次输入相同数字的观点。 我知道,如果我把随机数和使用uniq方法这个问题解决了,但我想在我把它放入数组之前排除数组中的数字。我怎么解决这个问题?我想知道在将数字放入数组之前,我有数组中的数字。

我最终要做的是 当我收到10个用户样本来分析他们的数据时。所以我不想分析已经分析过的用户。我想知道他们是否被分析。

4 个答案:

答案 0 :(得分:2)

我认为这是SetSet#add?方法的工作:

设置

  

Set实现无序值的集合,没有重复项。   这是Array的直观互操作设施的混合体   哈希的快速查找。

设置#添加吗

  

将给定对象添加到集合并返回self。如果对象是   已经在集合中,返回nil。

> set = Set.new([1,2,3,4,5,6,6,7])
=> #<Set: {1, 2, 3, 4, 5, 6, 7}>
> set.add? 7
=> nil
> set.add? 8
=> #<Set: {1, 2, 3, 4, 5, 6, 7, 8}>

答案 1 :(得分:1)

另一种选择是使用Array#|

[1,2,3] | [4]
#⇒ [1,2,3,4]
[1,2,3] | [1]
#⇒ [1,2,3]

请注意,它希望数组为RHO:

10.times.inject([]) { |memo, i| memo | [i % 3] }
#⇒ [0, 1, 2]

答案 2 :(得分:0)

您可以使用include进行检查吗?在将数组放入数组之前检查数字的方法。像这样

a = [1,2,3,4,5,6,7]
a.include?(8) != true
a << 8
p a
=> [1, 2, 3, 4, 5, 6, 7, 8]

答案 3 :(得分:-1)

您可以随机播放阵列并弹出元素。

arr = [1, 2, 3, 4].shuffle!
elem = arr.pop # 2
elem = arr.pop # 1
elem = arr.pop # 4
elem = arr.pop # 3