总结
豆包 AI 助手文章总结

用Python实现洗牌算法的运行步骤

王林
发布: 2024-01-23 23:24:10
转载
1564人浏览过

洗牌算法运行规则 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),重复这个过程直到我们找到第一个元素。

下面是详细的算法:

立即学习Python免费学习笔记(深入)”;

对包含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实现洗牌算法的运行步骤的详细内容,更多请关注php中文网其它相关文章!

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
相关标签:
来源:网易伏羲网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
豆包 AI 助手文章总结
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号