问题标签 [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.
c++ - 费舍尔耶茨变体
经典的 Fisher Yates 看起来像这样:
昨天,我错误地“向后”实现了迭代:
这个版本是否比第一个版本更差(或更好)?它是否会扭曲结果概率?
algorithm - Knuth shuffle 的一种变体
这是一个与 Knuth/Fisher-Yates shuffle 相关的非常困难但有趣的概率问题。
当对每个元素进行循环时,将当前元素与整个数组中的任何随机元素(不在左边的元素内)进行交换,那么原始第 i个元素在第 j个位置结束的概率是多少?
javascript - Fisher-Yates 算法解释?
我想知道你们中的一些人是否了解 Fisher-Yates shuffle 的工作原理并可以向我解释。所以我在网上找到了这个 Fisher-Yates Shuffle 代码:
该代码完美运行,但我仍然感到困惑
- 我将循环更改为“input.length”,但效果不佳,有时我仍然得到“0”值。我不知道为什么要使用“input.length-1”而不是“input.length”
- 在 randomize 部分,为什么我要将索引从 0 随机化到值 (i+1),我们为什么不直接将它从 0 随机化到 (i) 呢?
如果你们中的一些人理解它,你能解释一下吗?太感谢了
python - 费雪-耶茨洗牌
np.random.permutation
我写信询问使用 Fisher-Yates 洗牌算法对数据集进行洗牌与使用以下代码片段相比有什么区别:
javascript - 如何使用 Fisher-Yates Shuffle 对 TypeScript 中的数组进行洗牌?
我正在尝试使用 TypeScript 编写测验。提出的问题应该随机挑选,我正在使用 Fisher-Yates Shuffle 来做到这一点——但它不会随机选择它们。
我究竟做错了什么?Fisher-Yates Shuffle 出现在问题之后。
arrays - Lua:如何打乱数组中的某些元素?
如果我有一个 5 个字符串的表,但我只想随机播放第二个、第三个和第四个,我该怎么做?
Question = {“question here”,”resp1”,”resp2”,”resp3”,”answer”}
我只想将 resp1、resp2 和 resp3 洗牌。
algorithm - Knuth/Fisher-yates算法有哪些应用
该算法保证以均匀随机顺序重新排列元素。均匀随机是什么意思?
javascript - Fisher Yates 添加重复项
我正在尝试洗牌 6 个 T 和 6 个 A 并循环直到到达数组的末尾。但是,当我循环播放时,我不断显示不均匀数量的 T 和 A。我是 javascript 新手,不确定问题是否与随机播放或循环有关。
algorithm - Fisher yates 算法没有产生无偏的结果
维基百科上描述的 Fisher yates 算法是
该算法产生一个无偏的排列:每个排列都是同样可能的。
我浏览了一些文章,这些文章解释了一个朴素的和 Fisher yates 算法如何产生一组有偏见和无偏见的项目组合。
链接到文章
Fisher-Yates Shuffle – 每个开发人员都应该知道的算法
随机性很难:学习 Fisher-Yates shuffle 算法和随机数生成
文章继续展示了这两种算法的几乎无偏见和非常有偏见的结果图。我试图重现概率,但我似乎无法产生差异。
这是我的代码
这会产生以下结果
在这两种情况下,我的结果并没有太大的不同。我的问题是,我的实现错了吗?还是我的理解有误?
javascript - 改变 Fisher-Yates 洗牌,使一个值永远不会在它开始的同一个地方结束
我有一个对象数组,其中一个示例如下所示:
在我的 HTML 中,我有一个复选框。如果选中该框,我可以使用 shuffle 函数导致条目被随机打乱,可能会在它开始的相同位置留下一个值。但是,我尝试更改 else 语句中所示的算法会导致出现问题,并且程序会陷入无限循环。
如何正确修改算法,?