首先,我是初学者,使用ruby-on-rails作为开发人员。 我正在使用blahblah.sample(x)从blahblah获得(x)样本。 我想要做的是,我使用循环将几个不同的数字放在一个数组中。我将使用sample方法获取(x)数字。 以下是我不想在数组中多次输入相同数字的观点。 我知道,如果我把随机数和使用uniq方法这个问题解决了,但我想在我把它放入数组之前排除数组中的数字。我怎么解决这个问题?我想知道在将数字放入数组之前,我有数组中的数字。
我最终要做的是 当我收到10个用户样本来分析他们的数据时。所以我不想分析已经分析过的用户。我想知道他们是否被分析。
答案 0 :(得分:2)
设置强>
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