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实现洗牌算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程