返回顶部
首页 > 资讯 > 后端开发 > Python >用Python实现洗牌算法的运行步骤
  • 957
分享到

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

算法的概念 2024-01-24 07:01:19 957人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

给定一个数组,编写一个程序来生成数组元素的随机排列,这个问题也被称为“洗牌”或“随机化给定的数组”。洗牌算法中数组元素的每种排列的可能性都应该是相同的。 洗牌算法是如何运行的 给定的数组是arr[],一个简单的解决方法是创建一个

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

洗牌算法是如何运行的

给定的数组是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实现洗牌算法的运行步骤的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 用Python实现洗牌算法的运行步骤

本文链接: https://lsjlt.com/news/557645.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 用Python实现洗牌算法的运行步骤
    给定一个数组,编写一个程序来生成数组元素的随机排列,这个问题也被称为“洗牌”或“随机化给定的数组”。洗牌算法中数组元素的每种排列的可能性都应该是相同的。 洗牌算法是如何运行的 给定的数组是arr[],一个简单的解决方法是创建一个...
    99+
    2024-01-24
    算法的概念
  • 使用python怎么实现一个洗牌算法
    使用python怎么实现一个洗牌算法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬...
    99+
    2023-06-14
  • JavaScript如何实现洗牌算法
    这篇文章给大家分享的是有关JavaScript如何实现洗牌算法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。洗牌算法早前的 chrome 对于元素小于 10 的数组会采用插入排序,这会导致对数组进行的乱序并不是真...
    99+
    2023-06-27
  • 小程序怎么实现洗牌算法
    本篇内容介绍了“小程序怎么实现洗牌算法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!洗牌算法Fisher–Yates shuffle 算法由...
    99+
    2023-06-19
  • shell实现Fisher–Yatesshuffle洗牌算法介绍
    目录Fisher-Yates shuffle 算法简介shell实现本文介绍使用shell语法实现Fisher–Yates shuffle 洗牌算法。 Fisher-Yates sh...
    99+
    2024-04-02
  • shell实现Fisher–Yates&nbsp;shuffle洗牌算法介绍
    目录Fisher-Yates shuffle 算法简介shell实现本文介绍使用shell语法实现Fisher–Yates shuffle 洗牌算法。 Fisher-Yates shuffle 算法简介 Fisher–Y...
    99+
    2022-06-04
    Fisher–Yatesshuffle洗牌算法
  • Python使用Numpy实现Kmeans算法的步骤详解
    目录Kmeans聚类算法介绍:1.聚类概念:2.Kmeans算法:定义:大概步骤:Kmeans距离测定方式:3.如何确定最佳的k值(类别数):手肘法:python实现Kmeans算法...
    99+
    2024-04-02
  • python文件编译为pyc后运行的实现步骤
    目录一、pyc文件二、如何编译?2.1、源码方式编译2.2、cmd命令方式编译三、多文件编译3.1、多文件源码方式编译3.2、多文件cmd命令方式编译四、编译后运行注意事项4.1、原...
    99+
    2023-02-23
    python文件编译pyc运行 python文件编译运行
  • 用Java实现简易的洗牌和发牌功能
    在日常生活中,想必大家都玩过或者听过斗地主吧,斗地主大致分为三个过程:洗牌,发牌,玩家按照规则将手中的牌给打完,谁最先打完,谁就获胜。这听起来挺简单的,但是影响你胜利的因素有很多:洗牌,玩家的水平。在...
    99+
    2023-09-04
    java 开发语言 jvm
  • 学习Python中A*算法实现的详细步骤
    以此加权图为例,用Python实现A*算法。加权图中的节点用粉红色圆圈表示,并且给出了沿节点的路径的权重。节点上方的数字代表节点的启发式值。 首先为算法创建类。一个用于存储与起始节点的距离,另一个用于存储父节点。并将它们初始化...
    99+
    2024-01-23
  • win10下如何运行.sh文件的实现步骤
    确保您使用至少是Windows10的14316版本。 这种方法只适用于64位版本的Windows 10 今天居然惊奇地发现原来win10的功能简直强大到没话说,居然在更新后有一个linux的子系统,也就是说虚拟机神马的可...
    99+
    2022-06-04
    win10运行.sh文件 win10运行.sh
  • war包部署到Tomcat下运行的实现步骤
    目录war包部署到Tomcat下运行总结war包部署到Tomcat下运行 1、配置JDK安装路径到环境变量 2、配置Tomcat安装路径到环境变量 3、从Eclipse导出war包 ...
    99+
    2023-03-21
    war包部署 war包部署到Tomcat Tomcat部署war包
  • VsCode运行html界面的实战步骤
    目录前言1、安装插件open in browser的步骤2、总结前言 一般我们安装VSCode需要安装很多插件,在VSCode中默认编写的HTML页面是不能运行的。 新手在使用VSC...
    99+
    2022-11-13
    vscode运行html vscode怎么运行一个项目 vscode使用
  • 学会使用pandas进行高效的数据清洗步骤
    快速上手!使用Pandas进行数据清洗的方法 引言:随着数据的快速增长和不断积累,数据清洗成为了数据分析过程中不可忽视的一部分。而Pandas是Python中一种常用的数据分析工具库。它提供了高效且灵活的数据结构,使得数据清洗变...
    99+
    2024-01-24
    快速上手
  • Python实现遗传算法(虚拟机中运行)
    目录(一)问题(二)代码(三)运行结果(四)结果描述(一)问题 遗传算法求解正方形拼图游戏 (二)代码 #!/usr/bin/env python # -*- coding: u...
    99+
    2024-04-02
  • 使用docker部署java项目运行环境的实现步骤
    目录一、环境准备二、配置网络三、开放端口四、安装jdk五、安装docker六、运行环境搭建五.启动java项目一、环境准备 1. CentOS-7-x86_64-DVD-2003.i...
    99+
    2024-04-02
  • Python编程中归并排序算法的实现步骤详解
    基本思想:归并排序是一种典型的分治思想,把一个无序列表一分为二,对每个子序列再一分为二,继续下去,直到无法再进行划分为止。然后,就开始合并的过程,对每个子序列和另外一个子序列的元素进行比较,依次把小元素放入...
    99+
    2022-06-04
    算法 详解 步骤
  • 解决Devc++运行窗口中文乱码的实现步骤
    目录一、问题描述二、问题的产生原因三、解决问题的方法(一)使用旧版控制台(二)更改dev++的编码为ans(三)将运行窗口更改为utf-8一、问题描述 当你打开DevC++,编写好代...
    99+
    2024-04-02
  • Go 实现 Nginx 加权轮询算法的方法步骤
    目录一,Nginx 负载均衡的轮询 (round-robin)1. nginx 中的配置2. 简单介绍3. 特点4. 实现 (这里使用golang模拟实现)5. 测试二,Ngi...
    99+
    2022-06-07
    GO 方法 算法 Nginx
  • gpedit.msc在Win7中无法运行的解决步骤
    gpedit.msc在Win7中无法运行怎么办? 1、点击【开始】菜单2、点击“运行”3、键入"regedit"(不包括感叹号)4、在注册表键值 HKEY_CURRENT_US...
    99+
    2023-05-26
    gpedit.msc Win7 步骤 解决
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作