幼麟棋牌游戏技术分享:洗牌算法

大家好,我是麒麟子。

不得不说,我第一次写麻将的时候,对于洗牌算法,也是很纠结的。纠结的点并不在于能不能写出来,而是无法确定,自己写的这个洗牌算法,是否符合标准。

不止一次在QQ群里,微信中,以及论坛中,被人问起棋牌的洗牌算法。

幼麟棋牌的服务器是采用NodeJS来写的,所以,下面的代码,都是基于JS来演示。如果是使用其它语言的朋友,自己作一些调整即可。

1、幼麟棋牌中的洗牌算法

在Java标准库中,有一个洗牌算法,大概的逻辑就是,依次拿出一张牌,然后再随机挑选一张与这一张的位置互换。幼麟棋牌采用了这套算法,因为Java的市场占有率太高了,不得不相信。

二话不说,上代码。反正你们要的是代码。

//标准洗牌算法
function shuffle(arr){
	for(var i = 0; i < arr.length; ++i){
        var index = Math.floor(Math.random() * arr.length);
        var t = arr[index];
        arr[index] = arr[i];
        arr[i] = t;
    }
}

2、网狐洗牌算法

网狐洗牌算法,有点像来搞笑的,但是挺实用。 至于它与标准洗牌算法有多少差异,麒麟子没有去推算过。写出来,只是为大家提供了一些参考。

function shuffle(arr){
    arr.sort(function(a,b){
        return Math.random() > 0.5? -1:1;
    });
}

 

你可能感兴趣的:(棋牌分享,棋牌开发,NodeJS,幼麟棋牌官方专栏)