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

大家好,我是麒麟子。

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

不止一次在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;
    });
}

 

一麒麟子一 CSDN认证博客专家
编程15年,互联网创业者,技术作家。专注技术变现。本博客会输出我经历过的故事、开发教程、从业经验、源码推荐等内容。希望能够对大家有所帮助。
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值