algorithm - 朴素洗牌算法概率分析
问题描述
我正在阅读“朴素”洗牌算法和理想的“Fisher-Yates”算法。我得到了区别,也知道朴素算法有利于一些排列,而它不喜欢一些排列。
这是一个博客,解释了它们之间的区别以及我所说的一切。
我的问题是关于天真的洗牌算法。我想知道哪些排列最有可能发生,哪些排列最不可能发生?这是博客中唯一没有讨论的事情。
例如 :
如果我们使用这种简单的算法将 4 张编号为 1 到 4 的牌洗牌
在朴素算法将生成的所有 4^4 =(256) 排列中,最有可能出现 2、1、4、3 。同样, 4、3、2、1最不可能发生。
这里的参考是“天真的”洗牌算法:
arr := [1, 2, ..., N]
for i in 1..N do
j := rand(1, N)
swap(arr[i], arr[j])
编辑:已经检查了这个网站的类似问题,但没有得到关于最可能和最不可能排列概率的答案。它们都在简单地解释朴素算法的有偏结果。
解决方案
推荐阅读
- javascript - 借助 JavaScript 中的 setInterval 在特定时间执行一段代码
- python - 带有 Numpy 数组的 Python Deque
- bluetooth-lowenergy - 在没有开发人员指南的情况下连接到 OBD2 蓝牙 LE 设备
- kubernetes - Kubernetes 最佳实践:本地或远程的不同配置
- symfony - Symfony 4 EntityType 数据库未更新
- java - 如何从第 6 次活动返回家中
- python - 函数“idx2char”如何工作
- c# - 为什么在用户控件后面的代码中访问 div 时出现 NullReferenceException
- python-3.x - 如何将日期拆分为日、月和年
- flutter - 如何在 Flutter 中设置图像