问题标签 [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.
python - shuffle函数中随机选位交换的原理是什么
Fisher-Yates shuffle的意思是我们每次从选中的segment中取出最后一个数,和之前随机选中的数交换,不断迭代,最终实现随机shuffle。python3.6中官方Shuffle的代码如下
为什么不直接选择全球位置并交换?</p>
algorithm - 具有大量重复的无偏洗牌
Fisher-Yates 算法生成有限序列的无偏随机排列。运行时间与被洗牌的元素数量成正比。
我想用大量零元素来洗牌一些非零元素。
使用列表实现 Fisher-Yates 算法会导致洗牌过程花费太长时间并且需要太多存储空间。Fisher--Yates 算法中的大多数步骤将简单地切换重复零元素的位置。
是否存在随机洗牌(或替代)算法:
- 导致无偏排列
- 不需要洗牌和存储所有重复的元素
c# - 如何在 C# 中以相同的方式随机化/洗牌两个数组
我有两个数组,一个是 PictureBox 数组,另一个是 Integer 数组,它们都具有相同数量的元素。我希望两个数组每次都随机洗牌,但都以同样的方式洗牌。
如果我使用两个 PictureBox 数组或两个 Integer 数组,这是一个有效的代码,但是我希望它对一个 PictureBox 数组和一个 Integer 数组进行洗牌。
这是我想要工作的代码:(两个不同的数组)
这是有效的代码:(对于相同的数组)
如果您知道另一个可以帮助我的不同代码,请随时分享!
java - 为字符实现 Yates Shuffle 时出错
我有一个字符数组,我尝试使用 Yates Shuffle 进行混合,但是这导致了一个错误
代码:
错误:
java - 为什么随机种子禁止洗牌?
参考这篇文章如何真正洗牌
Java 使用 32/48/64 位随机种子,即使使用 Fisher-Yates 算法作为 2^64 << 52!,也禁止真正的洗牌。
但是在我看来,只要在每个循环中统一生成 <= 52 个随机数,结果将是真正的 52 随机数!根据算法的可能性。
我在这里想念什么?为什么 2^64 甚至在这里相关?