洗扑克牌问题
来源:互联网 发布:ipad怎么在淘宝找微淘 编辑:程序博客网 时间:2024/04/30 07:06
问题与解法描述:
/*问题:洗扑克牌
* 洗扑克牌原理=乱数排序,都是将一组数字(1-N)打乱重新排列,要求按照花色排列。
* 解法:
* 1-N按顺序排列好,依次顺序访问,并产生一个1-N随机数,将走访到的与随机数进行交换就可以!
* 因为13个数,4个花色,对13取商判断花色,取余判断数字!
*/
可运行代码:
public class ShuffleCard {public static void shuffle(){ final int N= 52; int[] poker = new int[N+1]; //初始化 for(int i=1;i<=N;i++) poker[i]=i; //洗牌 for(int i=1;i<=N;i++){ int j = (int)(Math.random()*52);//random产生0-1之间的数字,所以*N就是0-52 if(j == 0) j = 1; //交换 int temp = poker[i]; poker[i]=poker[j]; poker[j] = temp; } // for(int i=1;i<=N;i++){ //扑克牌花色 switch((poker[i]-1)/13){ case 0: System.out.print("红桃"); break; case 1: System.out.print("黑桃"); break; case 2: System.out.print("方块"); break; case 3: System.out.print("梅花"); break; } //扑克牌数字 int remain = poker[i]%13; switch(remain){ case 0: System.out.print("K "); break; case 12: System.out.print("Q "); break; case 11: System.out.print("J "); break; default: System.out.print(remain +" "); break; } //控制换行 if(i%13==0) System.out.println(""); }
运行结果:
黑桃J 红桃6 黑桃8 梅花4 方块1 方块2 红桃1 红桃K 红桃8 黑桃1 红桃J 红桃2 方块K
方块9 梅花K 黑桃4 梅花2 方块4 黑桃Q 方块Q 方块J 梅花6 梅花7 梅花J 方块5 红桃5
红桃7 红桃10 红桃4 红桃Q 黑桃K 红桃3 梅花10 梅花1 方块3 梅花3 梅花8 黑桃6 梅花Q
黑桃10 方块6 黑桃5 方块8 黑桃9 黑桃3 黑桃7 梅花9 黑桃2 方块7 红桃9 方块10 梅花5
阅读全文
0 0
- 洗扑克牌问题
- 扑克牌问题
- 扑克牌问题
- 洗扑克牌
- 扑克牌概率问题
- 扑克牌移动问题
- 扑克牌顺子问题
- 扑克牌的顺子问题
- 扑克牌游戏问题
- Shuffle随机扑克牌问题
- 取扑克牌问题
- 扑克牌博弈问题
- 扑克牌中的顺子问题
- 扑克牌问题之排序
- 扑克牌排列问题解法
- 扑克牌问题之比较大小
- 算法:扑克牌的顺子问题
- 游戏算法-洗扑克牌
- js特殊字符过滤的示例代码
- hadoop hdfs 安装参考
- 超强、超详细Redis数据库入门教程
- Intellij IDEA 14中使用MyBatis-generator 自动生成MyBatis代码
- 【转】pandas DataFrame 逐行操作(可修改数据)
- 洗扑克牌问题
- 浅谈HTTPS以及Fiddler抓取HTTPS协议
- 编程(1)-字符编码
- java高级特性之泛型
- Java应用OpenCV指南其一:在Java中安装与配置OpenCV
- 在微信公众号中如何添加【自定义菜单】,原创图文教程
- Spring配置 <context:component-scan/> <mvc:annotation-driven />
- oracle 按每天,每周,每月,每季度,每年查询统计数据
- 基于FFmpeg的视频推流