algorithm - 将数组 2 个元素按 2 个随机洗牌

标签 algorithm shuffle

我的问题与算法有关,而不是与编程语言有关,所以请随意使用任何语言来解释我。

我有一个数组,我想以随机方式对其进行洗牌,无论如何洗牌当时必须涉及 2 个元素。 所以,如果我有:

1 2 3 4 5 6 7 8 9 10

1-2,3-4,5-6等对必须一起洗牌导致,例如,以下

3 4 7 8 9 10 1 2 5 6

最佳答案

它与普通随机播放相同,只是您将“随机播放数组”视为实际数组大小的一半。意思是 1,2,3,4,5,6 实际上是一个数组 1 2, 3 4, 5 6

这是一些使用 fisher yates 的伪代码:

To shuffle an array a of n elements (indices 0..n-1) in pairs of 2:
  for i from (n − 1) / 2 downto 1 do
       j ← random integer with 0 ≤ j ≤ i
       exchange a[j * 2] and a[i * 2]
       exchange a[j * 2 + 1] and a[i * 2 + 1]

关于algorithm - 将数组 2 个元素按 2 个随机洗牌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14874408/

相关文章:

python - 与 Python 和 Google App Engine 的随机匹配

java - 如何创建动态二维数组并在其中存储打乱数组

java - Java随机打乱列表

c++ - 解决难题(最佳解决方案)

algorithm - cornu螺旋/样条的高速绘图算法?

c - 查找字符串是否是 C 中的迭代子字符串算法?

php - 为什么我的 PHP 代码不起作用?

c# - 从多个数组中找到所有可能的组合

r - 如何随机化向量

c++ - 在 C++ 中仅随机排列多维数组的行