基础篇

洗牌采用的是,每一张牌,与后面随机一张牌来交换位置。

扑克牌采用编码制(如,0代表红桃A,依次类推)为了编码方便,扑克牌不含大小王,故52张。

一、扑克牌的了解

扑克(英文:Poker)
一副扑克牌有54张牌,其中52张是正牌,另2张是副牌(大王和小王)。
52张正牌又均分为13张一组,并以黑桃、红桃、草花、方块四种花色表示各组,每组花色的牌包括从1-10(1通常表示为A)以及J、Q、K标示的13张牌。
为了简化对象,我们把扑克作为Card类,属性值为suit 和 face。
function Card(){

                this.suit = ""
this.face = "" this.setSuit = function(newSuit){
this.suit = newSuit
} this.setFace = function(newFace){
this.face = newFace
} this.showCard = function(){
document.write(this.suit+this.face +'\n')
}
}

二、洗牌思想

洗牌采用第一张,与后面随机一张交换位置。

用数组poker[53]代表一副扑克牌,多出的一张作为用来交换牌时的temp容器。

    for(i = 0; i < poker.length-1; i++){
var rnd = Math.round( Math.random() * 51 )
poker[52] = poker[rnd] poker[rnd] = poker[i]
poker[i] = poker[52] }

三、牌与面值关联

这个通过两个简单的数组就可以搞定。

一个存放suit,另一个存放face

var suitGroup = ["红桃", "方块", "梅花", "黑桃"]
var faceGroup = ["A", "1", "2", "3", "4", "5", "6", "7", "8","9", "J", "Q", "K" ] for(i = 0; i < poker.length-1 ; i++){
var card = new Card()
card.setSuit( suitGroup[ poker[i]%4 ] )
card.setFace( faceGroup[ poker[i]%13 ] )
card.showCard()
}

Js实现简单的洗牌的更多相关文章

  1. js 随机数 洗牌算法

    function shuffle(arr){ var len = arr.length; for(var i = 0;i<len -1;i++) { var idx = Math.floor(M ...

  2. js 数组随机洗牌

    //先定义一个某数值范围内的随机数 function getRandom(min, max) { return Math.floor(Math.random() * (max - min + 1) + ...

  3. 洗牌算法Fisher_Yates原理

    1.算法 http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle 简单的原理如下图所示: 2.原理 总结下,洗牌算法Fisher_Yates ...

  4. [转]完美洗牌(Perfect Shuffle)问题

    [转]原博文地址:https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/zh/02.09.md ...

  5. Baraja演示15种不同的洗牌特效

      实例演示 下载地址 实例代码 实例演示 实例代码 <div class="container"> <header class="clearfix&q ...

  6. [CareerCup] 18.2 Shuffle Cards 洗牌

    18.2 Write a method to shuffle a deck of cards. It must be a perfect shuffle—in other words, each of ...

  7. 【BZOJ-1965】SHUFFLE 洗牌 快速幂 + 拓展欧几里德

    1965: [Ahoi2005]SHUFFLE 洗牌 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 541  Solved: 326[Submit][St ...

  8. 完美洗牌&洗牌

    完美洗牌问题,给定一个数组a1,a2,a3,...an,b1,b2,b3..bn,把它最终设置为b1,a1,b2,a2,...bn,an这样的. O(n)的算法,O(n)的空间. 对于前n个数,映射为 ...

  9. 1965: [Ahoi2005]SHUFFLE 洗牌 - BZOJ

    Description 为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动. 由于Samuel星球相当遥远,科学家们要在飞船中度过相当长的一段时间,小联 ...

随机推荐

  1. abrt-hook-ccpp: Saved core dump of pid 12224导致dn挂掉问题

    一.引言: 最近发现datanode老是无缘无故的进程挂掉,从程序的日志没有stop迹象,只能从/var/log/messages入手,发现如下信息: 从namenode的页面也可以看到进程消息的时间 ...

  2. 突击战UVa11729Commando War

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=117&page= ...

  3. 分页sql优化

    如果分页sql里包含排序: select * from (...order by id) where rownum <=20 因为要排序,所以即使是分页只取20条,执行计划还是要把所有满足条件的 ...

  4. 20161013001 DataGridView 数据转 DataTable

    DataTable dt2 =  GetDgvToTable(Form_CY_ProjectRequirements_D);    MessageBox.Show( dt2.Rows.Count.To ...

  5. 嵌入式Linux > 简易安装思路,步骤记录

    思路就是把ipk文件通过ftp上传到linux上,然后通过opkg来安装. 很多的工具已经都能UI化这些操作了,命令行只是备用的工具, - 当所有工具都不好用或者遇到问题的时候,上命令行是最直接.快捷 ...

  6. GitHub注册账号

    username : hcloudypassword : hujunyun3174email : 370284221@qq.com

  7. less简单用法

    http://less.bootcss.comless工具:koala工具url:http://koala-app.com/index-zh.html// less import: // less 文 ...

  8. jq

    1: http://jquery.cuishifeng.cn/index.html jquery 学习查询首页<br> 2: http://m.oschina.net/blog/75741 ...

  9. pinpoint 安装部署

    .markdown-preview:not([data-use-github-style]) { padding: 2em; font-size: 1.2em; color: rgb(171, 178 ...

  10. [bzoj1935][shoi2007]Tree 园丁的烦恼(树状数组+离线)

    1935: [Shoi2007]Tree 园丁的烦恼 Time Limit: 15 Sec  Memory Limit: 357 MBSubmit: 980  Solved: 450[Submit][ ...