登录
首页 >  文章 >  python教程

Python实现洗牌算法的运行规则

来源:网易伏羲

时间:2024-01-24 20:03:44 120浏览 收藏

推广推荐
免费电影APP ➜
支持 PC / 移动端,安全直达

从现在开始,努力学习吧!本文《Python实现洗牌算法的运行规则》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

洗牌算法运行规则 Python实现洗牌算法

给定一个数组,编写一个程序来生成数组元素的随机排列,这个问题也被称为“洗牌”或“随机化给定的数组”。洗牌算法中数组元素的每种排列的可能性都应该是相同的。

洗牌算法是如何运行的

给定的数组是arr[],一个简单的解决方法是创建一个辅助数组temp[],它最初是arr[]的副本。从temp[]中随机选择一个元素,将随机选择的元素复制到arr[0],然后从temp[]中删除选择的元素。重复相同的过程n次并继续将元素复制到arr[1]、arr[2]、...。该解决方案的时间复杂度为O(n^2)。

Fisher-Yates shuffle算法的工作时间复杂度为O(n)。这里的假设是,我们得到一个函数rand(),它在O(1)时间内生成一个随机数。这个想法是从最后一个元素开始,并将其与整个数组(包括最后一个)中随机选择的元素交换。现在考虑从0到n-2的数组(大小减1),重复这个过程直到我们找到第一个元素。

下面是详细的算法:

对包含n个元素(索引0..n-1)的数组a进行洗牌

for i from n-1 downto 1 do
j=random integer with 0<=j<=i
exchange a[j]and a<i>

Python实现洗牌算法

from random import randint
def randomize(arr,n):
for i in range(n-1,0,-1):
j=randint(0,i+1)
arr<i>,arr[j]=arr[j],arr<i>
return arr
arr=[1,2,3,4,5,6,7,8]
n=len(arr)
print(randomize(arr,n))
输出结果:7 8 4 6 3 1 2 5

终于介绍完啦!小伙伴们,这篇关于《Python实现洗牌算法的运行规则》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!

声明:本文转载于:网易伏羲 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>