首页 > 试题广场 > 当我们需要制作扑克游戏时,经常需要一个洗牌算法,来让不同玩家获得更随机一些...
[问答题]
当我们需要制作扑克游戏时,经常需要一个洗牌算法,来让不同玩家获得更随机一些的牌面,现在需要你用JS来写实现一个洗牌函数shuffle,接收一个数组作为参数,返回洗牌后的新数组:

function shuffle(arr) {     //***
}

3个回答

添加回答
function shuffle(arr) {
if(this.circut == undefined){
this.circut =0
}
this.circut += 1
console.log('this,circut',this.circut)
var length = arr.length
var arr1=arr.slice(0,length/2)
var arr2=arr.slice(length/2,length)
var arrnow = [ ]
for (var i=0;i<length/2;i++){
arrnow.push(arr1[i])
arrnow.push(arr2[i])
}
if(arrnow.indexOf(undefined)==-1 && this.circut<3){
return shuffle(arrnow)
}else if(this.circut<3){
arrnow.splice(arrnow.indexOf(undefined),1)
return shuffle(arrnow)
}
if(this.circut==3){
return arrnow
}
}


1
2

发表于 2018-12-10 21:21:58 回复(0)
functionshuffle (arr) {
    varres = [];
    for(vari = 0; i < 3; i++) {
         res[i] = [];
         vardoAdd = function() {
             for(varj = 0; j < 13; j++){
                varnum = random();
                if(hasValue(arr, num)) {
                    varindex = arr[hasValue(arr,num)];
                    res[i][j] = arr[index];
                    arr.splice(index, 1);
                } else{
                     doAdd();
                }
              }
          }
          doAdd(); 
    }
}
functionhasValue (arr, num) {
    let num = null;
    arr.forEach((item, index) => {
        if(item === num) {
            returnindex;
        }
    });
    returnnull;      
}
// 生成1-13的随机数
functionrandom() {
    retun Math.round(Math.random()*(13-1) + 1);
}

发表于 2018-12-10 15:57:23 回复(0)
function shuffle(arr) {
    var arr_1 = [];
    while (arr.length > 0){
       var index = Math.round(Math.random()*(arr.length - 1));
       arr_1.push(arr[index]);
       arr.splice(index, 1);
    }
    return arr_1;
} 🤣🤣🤣 

发表于 2018-12-07 18:34:09 回复(0)

扫一扫,把题目装进口袋

牛客网,程序员必备求职神器

扫描二维码,进入QQ群

扫描二维码,关注牛客网公众号

  • 公司地址:北京市朝阳区大屯路东金泉时代3-2708北京牛客科技有限公司
  • 联系方式:010-60728802(电话) admin@nowcoder.com
  • 牛客科技©2018 All rights reserved
  • 京ICP备14055008号-4
  • 京公网安备 11010502036488号