问题标签 [fisher-yates-shuffle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
28 浏览

python - shuffle函数中随机选位交换的原理是什么

Fisher-Yates shuffle的意思是我们每次从选中的segment中取出最后一个数,和之前随机选中的数交换,不断迭代,最终实现随机shuffle。python3.6中官方Shuffle的代码如下

为什么不直接选择全球位置并交换?</p>

0 投票
1 回答
83 浏览

algorithm - 具有大量重复的无偏洗牌

Fisher-Yates 算法生成有限序列的无偏随机排列。运行时间与被洗牌的元素数量成正比。

我想用大量零元素来洗牌一些非零元素。

使用列表实现 Fisher-Yates 算法会导致洗牌过程花费太长时间并且需要太多存储空间。Fisher--Yates 算法中的大多数步骤将简单地切换重复零元素的位置。

是否存在随机洗牌(或替代)算法:

  1. 导致无偏排列
  2. 不需要洗牌和存储所有重复的元素
0 投票
2 回答
62 浏览

c# - 如何在 C# 中以相同的方式随机化/洗牌两个数组

我有两个数组,一个是 PictureBox 数组,另一个是 Integer 数组,它们都具有相同数量的元素。我希望两个数组每次都随机洗牌,但都以同样的方式洗牌。

如果我使用两个 PictureBox 数组或两个 Integer 数组,这是一个有效的代码,但是我希望它对一个 PictureBox 数组和一个 Integer 数组进行洗牌。

这是我想要工作的代码:(两个不同的数组)

这是有效的代码:(对于相同的数组)

如果您知道另一个可以帮助我的不同代码,请随时分享!

0 投票
0 回答
11 浏览

java - 为字符实现 Yates Shuffle 时出错

我有一个字符数组,我尝试使用 Yates Shuffle 进行混合,但是这导致了一个错误

代码:

错误:

0 投票
1 回答
32 浏览

java - 为什么随机种子禁止洗牌?

参考这篇文章如何真正洗牌

Java 使用 32/48/64 位随机种子,即使使用 Fisher-Yates 算法作为 2^64 << 52!,也禁止真正的洗牌。

但是在我看来,只要在每个循环中统一生成 <= 52 个随机数,结果将是真正的 52 随机数!根据算法的可能性。

我在这里想念什么?为什么 2^64 甚至在这里相关?