arrays - 在洗牌和切片 Ruby 数组时防止相同的对

标签 arrays ruby shuffle

在 Ruby 数组中生成一组随机对时,我想防止生成具有相同项目的对。

例如:

[1,1,2,2,3,4].shuffle.each_slice(2).to_a

可能产生:

[[1, 1], [3, 4], [2, 2]]

我希望能够确保它产生如下结果:

[[4, 1], [1, 2], [3, 2]]

在此先感谢您的帮助!

最佳答案

arr = [1,1,2,2,3,4]
loop do
  sliced = arr.shuffle.each_slice(2).to_a
  break sliced if sliced.none? { |a| a.reduce(:==) }
end

关于arrays - 在洗牌和切片 Ruby 数组时防止相同的对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47487385/

相关文章:

ruby - 无法在 Mojave 中使用 rvm 安装新版本的 ruby

ruby-on-rails - 从 Rails 中确定 ruby​​ 版本

python - 如何在Python中重新打乱已打乱顺序的列表

c++ - 打乱字符串而不是整数的代码

javascript - 选择随机 <li> 元素

python - 在数组中找到几个感兴趣的区域

c - C中字符串的数组和指针表示法之间的区别

arrays - Ruby 数组排序 2 种不同的方式

javascript - 使用 JQuery 从数组中设置选择选项值和文本

ruby - 为什么我没有成功摆脱这个 Ruby 循环?