我有一个这样的数组:
a = [["A", "1"], ["B", "2"], ["C", "3"], ["D", "4"], ["E", "5"]]
我需要创建一个随机对列表,删除与之前相似的新列表。
示例:
a = [["B", "4"], ["A", "2"], ["E", "3"], ["C", "5"]]
不接受:
["D", "4"]
答案 0 :(得分:3)
k, v = a.transpose
a = [k, v.shuffle].transpose - a
答案 1 :(得分:1)
如果要将字母和数字混洗(如果顺序很重要),请使用:
letters, numbers = a.transpose
letters.shuffle.zip(numbers.shuffle)
如果要删除原件的重复项,请:
letters.shuffle.zip(numbers.shuffle) - a
答案 2 :(得分:0)
没有说明输出应该有多少元素。以下是适用于n
输出元素的示例:
a = [["A", "1"], ["B", "2"], ["C", "3"], ["D", "4"], ["E", "5"]]
n = 3
v1, v2 = a.map(&:first), a.map(&:last)
r = (v1.flat_map {|i| v2.map {|j| [i, j]}} - a).sample(n)
#=> [["A", "3"], ["D", "1"], ["D", "5"]]