在随机位置的ruby中压缩2个数组
发布时间:2020-12-17 02:33:33 所属栏目:百科 来源:网络整理
导读:有没有一种简单的方法可以在随机位置压缩2个数组并保持原始顺序? 例如 a=[0,1,2,3,4,5,6,7,8,9,10]b=["one","two","three","four"] 和随机数从0到5与兰特(5) zipped = [0,"one","four",10] 并且随机序列将是1,4作为将“b”的每个元素“压缩”到a的位置 我能
有没有一种简单的方法可以在随机位置压缩2个数组并保持原始顺序?
例如 a=[0,1,2,3,4,5,6,7,8,9,10] b=["one","two","three","four"] 和随机数从0到5与兰特(5) zipped = [0,"one","four",10] 并且随机序列将是1,4作为将“b”的每个元素“压缩”到a的位置 我能做的最好的是 i=0 merged=a b.each do |x| rnd = rand(5) merged.insert(i+rnd,x) i=i+rnd end 解决方法
这个版本将提供平衡的混洗,插入不偏向阵列的任何一端.
def ordered_random_merge(a,b) a,b = a.dup,b.dup a.map{rand(b.size+1)}.sort.reverse.each do |index| b.insert(index,a.pop) end b end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |