加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在随机位置的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读