javascript实现洗牌算法
2021/4/18 22:25:45
本文主要是介绍javascript实现洗牌算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
洗牌算法是将原来的数组进行打散,使原数组的某个数在打散后的数组中的每个位置上等概率的出现。
1、抽牌法,随机从原数组抽取一个数到新数组中,原数组则删除抽中的数。
function shuffle_pick(arr){ var len = arr.length; var arr2 = new Array(); for(var i=len;i>0;i--){ var rand = Math.floor(Math.random()*i); arr2.push(arr[rand]); arr.splice(rand,1); } return arr2; }
2、第一种方法的优化,不删除原数组的数,而是将最后一张未抽取的数放到被抽中的那个空位置。
function shuffle_pick(arr){ var len = arr.length; var arr2 = new Array(); for(var i=len;i>0;){ var rand = Math.floor(Math.random()*i); arr2.push(arr[rand]); arr[rand] = arr[--i]; } return arr2; }
3、换牌法,将第i张与随机位置进行交换,换完一轮即可。
function shuffle_swap(arr){ var len = arr.length; for(var i=0;i<len;i++){ var rand = Math.floor(Math.random()*(i+1)); [arr[i],arr[rand]] = [arr[rand],arr[i]]; } return arr; }
这篇关于javascript实现洗牌算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南