【算法】扑克发牌算法实现

2016-02-19 11:14 4 1 收藏

get新技能是需要付出行动的,即使看得再多也还是要动手试一试。今天图老师小编跟大家分享的是【算法】扑克发牌算法实现,一起来学习了解下吧!

【 tulaoshi.com - Web开发 】

首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下:
u 红桃按照从小到大依次为:1-13
u 方块按照从小到大依次为:14-26
u 黑桃按照从小到大依次为:27-39
u 梅花按照从小到大依次为:40-52
u 小王为53,大王为54
算法实现如下:
u 首先按照以上编号规则初始化一个包含108个数字的数组
u 每次随机从该数组中抽取一个数字,分配给保存玩家数据的数组
实现该功能的代码如下所示:
代码如下:

import java.util.*;
/**
* 发牌算法的实现
* 要求:把2副牌,也就是108张,发给4个人,留6张底牌
*/
public class Exec{
public static void main(String[] args){
//存储108张牌的数组
int[] total = new int[108];
//存储四个玩家的牌
int[][] player = new int[4][25];
//存储当前剩余牌的数量
int leftNum = 108;
//随机数字
int ranNumber;
//随机对象
Random random = new Random();

//初始化数组
for(int i = 0;i total.length;i++){
total[i] = (i + 1) % 54;
//处理大小王编号
if(total[i] == 0){
total[i] = 54;
}

}

//循环发牌
for(int i = 0;i 25;i++){
//为每个人发牌
for(int j = 0;j player.length;j++){
//生成随机下标
ranNumber = random.nextInt(leftNum);
//发牌
player[j][i] = total[ranNumber];
//移动已经发过的牌
total[ranNumber] = total[leftNum - 1];
//可发牌的数量减少1
leftNum--;
}
}

//循环输出玩家手中的牌
for(int i = 0;i player.length;i++){
for(int j = 0;j player[i].length;j++){
System.out.print(" " + player[i][j]);
}
System.out.println();
}
//底牌
for(int i = 0;i 8;i++){
System.out.print(" " + total[i]);
}
System.out.println();
}
}

来源:https://www.tulaoshi.com/n/20160219/1596819.html

延伸阅读
在MySQL 中,只有一种 Join 算法,就是大名鼎鼎的 Nested Loop Join,他没有其他很多数据库所提供的 Hash Join,也没有 Sort Merge Join。顾名思义,Nested Loop Join 实际上就是通过驱动表的结果集作为循环基础数据,然后一条一条的通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果。如果还有第三个参与 Join,则再通...
代码如下: public class MirrorView extends View {  Paint m_paint;  int m_nShadowH;  Drawable m_dw;  Bitmap m_bitmap;  //xxxx  Matrix mMatrix;  int shadowHeight;  public MirrorView(Context context, Bitmap bitmap) {   super(context);   m_bitmap = bitmap;   _Init(); ...
轻松实现DES算法查看器 作者:小帅 下载源代码 DES(Data Encrypton Standard) 算法的实现网上已经有很多,本人在此讲述的是在DES算法加密过程中如何查看16迭代过程中生成的Ki,Li,Ri,Fi,Si等,这样可以当做一个DES加密对照器,这样可以方便的发现你在加密过程中出现的错误! 图一:程序运行界面 本程序用...
顺推法     倒推法的逆过程就是顺推法,即由边界条件出发,通过递推关系式推出后项值,再由后项值按递推关系式推出再后项值......,依次递推,直至从问题初始陈述向前推进到这个问题的解为止。     实数数列:一个实数数列共有N项,已知        &...
参数model有一个二维数组data,及阶数matrix // .h文件@class DataModel; @interface Algorithm : NSObject @property (nonatomic,assign) int addScore; // 加分 - (void)caculateTop:(DataModel *)model; // 上滑规则- (void)caculateBottom:(DataModel *)model; // 下滑规则- (void)caculateLeft:(DataModel *)model; // 左滑规则- (void...

经验教程

913

收藏

11

精华推荐

利用JAVA实现DES加密算法

利用JAVA实现DES加密算法

w24317579

利用C++实现哈夫曼算法

利用C++实现哈夫曼算法

北方的穷人4

IBM的MARS加密算法实现(上)

IBM的MARS加密算法实现(上)

L2319339666

微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部