当我们需要制作扑克游戏时,经常需要一个洗牌算法,来让不同玩家获得更随机一些的牌面,现在需要你用JS来写实现一个洗牌函数shuffle,接收一个数组作为参数,返回洗牌后的新数组:
function shuffle(arr) { //*** }
1 2 | |
function getRandomInt (min, max) { return Math.floor(Math.random() * (max - min + 1) + min) } function shuffle (arr) { let _arr = arr.slice(); for (let i = 0 ; i < _arr.length; i++) { let j = getRandomInt(0, i); let temp = _arr[i]; _arr[i] = _arr[j]; _arr[j] = temp; } return _arr; }
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);}