首页 > 解决方案 > 朴素洗牌算法概率分析

问题描述

我正在阅读“朴素”洗牌算法和理想的“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])

编辑:已经检查了这个网站的类似问题,但没有得到关于最可能和最不可能排列概率的答案。它们都在简单地解释朴素算法的有偏结果。

标签: algorithmpermutationprobabilityshuffle

解决方案


推荐阅读