54张扑克牌排序算法,存放在一个List .实现List中扑克牌排序算法排序,要求采用的顺序为:大王,小王,黑桃A

下次自动登录
现在的位置:
& 综合 & 正文
一个概率题:54张扑克牌,除去两张大小王剩下52张扑克牌。问红桃A和黑桃A同时被一个人拿到的概率是多少?
任意排列的种数有C(52,13)*C(39,13)*C(26*13)其中两个A在一家的种数为C(4,1)*C(50,11)*C(39,13)*C(26*13)
因此概率为
C(4,1)*C(50,11)*C(39,13)*C(26*13)--------------------------------C(52,13)*C(39,13)*C(26*13)=4*C(50,11)/C(52,13) = 4*(50!/11!/39!) / (52!/13!/39!)= 4*13*12/51/52
&&&&推荐文章:
【上篇】【下篇】54张扑克,存放在一个List .实现List中扑克排序,要求采用的顺序为:大王,小王,黑桃A-K, 红心A-K, 草花A-K,方块A-K. - javaxash的专栏 - CSDN博客
54张扑克,存放在一个List .实现List中扑克排序,要求采用的顺序为:大王,小王,黑桃A-K, 红心A-K, 草花A-K,方块A-K.
package com.james.
import java.util.ArrayL
import java.util.C
import java.util.I
import java.util.L
public class Poker
& &// 花色 1.大王,小王,2.黑桃,3.红心,4.草花,5.方块
& &// 扑克字面值 大王1,小王2,其他花色1-13 分别代表A-K
public Poker(int color, int id)
& & this.color =
& & this.id =
public int getColor()
public int getId()
public static void Display(List&Poker& l)
& & Iterator&Poker& it = l.iterator();
& & while (it.hasNext())
& & &Poker pk = it.next();
& & &System.out.println(&Color:& + pk.getColor() + & ,Id:& + pk.getId());
public static void main(String[] args)
& & Poker p0 = new Poker(1, 1);// 大王
& & Poker p1 = new Poker(1, 2);// 小王
& & int n = 4;// 普通花色种类
& & int m = 13;// 普通花色扑克字面值上限&
& & Poker[] p = new Poker[52];// 普通花色扑克
& & // 构建扑克数组
& & for (int i = 0; i & i++)
& & & & & &for (int j = 0; j & j++)
& & & & & & & & & p[i * m + j] = new Poker(i + 2, j + 1);
& & List&Poker& l = new ArrayList&Poker&();
& & // 扑克倒序插入List中(这里为了简单只是倒序,也可以写方法随机打乱顺序)
for (int i = p.length - 1; i &= 0; i--)
& & & &l.add(p[i]);
& & & &l.add(p0);
& & & &l.add(p1);
// 实例化一个比较器,用于给List排序
Comparator&Poker& cmp = new Comparator&Poker&()
public int compare(Poker o1, Poker o2)
&* 排序使用的规则 先按花色排序,如果花色相同再按字面值排序
& & int color1 = o1.getColor();
& & int color2 = o2.getColor();
& & if (color1 & color2)
& & & & &return -1;
& & if (color1 & color2)
& & & & &return 1;
& & // 花色相同
& & int id1 = o1.getId();
& & int id2 = o2.getId();
& & if (id1 & id2)
& & & return -1;
& & if (id1 & id2)
& & & return 1;
& & // 花色和字面值都相同
& & return 0;
& &System.out.println(&排序前List的内容:&);
& &Display(l);
& &// 给list排序
& &Collections.sort(l, cmp);
& &System.out.println(&排序后List的内容:&);
& &Display(l);
import&java.util.ArrayL
import&java.util.L
public&class&Pk&{
public&static&void&main(String[]&args)&{
&&String[]&suit={&黑桃&,&红桃&,&樱花&,&方块&};
&&String[]&rank={&A&,&2&,&3&,&4&,&5&,&6&,&7&,&8&,&9&,&10&,&J&,&Q&,&K&};
&&List&cards&=new&ArrayList();
&&cards.add(&大王&);
&&cards.add(&小王&);
&&for&(int&i&=&0;&i&&&suit.&i++)&
&&&&for&(int&j&=&0;&j&&&rank.&j++)&
&&&&&&&&&cards.add(suit[i]+rank[j]);
&&for&(int&i&=&0;&i&&cards.size();&i++)&{
&&&&if(i==1&||&(i-1)%13==0)
&&&&&&System.out.println(cards.get(i));
&&&&&&System.out.print(cards.get(i)+&&&);
我的热门文章2011年2月 C/C++大版内专家分月排行榜第二2010年2月 C/C++大版内专家分月排行榜第二2009年12月 C/C++大版内专家分月排行榜第二2009年11月 C/C++大版内专家分月排行榜第二
2009年10月 C/C++大版内专家分月排行榜第三
2011年2月 C/C++大版内专家分月排行榜第二2010年2月 C/C++大版内专家分月排行榜第二2009年12月 C/C++大版内专家分月排行榜第二2009年11月 C/C++大版内专家分月排行榜第二
2009年10月 C/C++大版内专家分月排行榜第三
2010年6月 其他开发语言大版内专家分月排行榜第三2009年9月 C/C++大版内专家分月排行榜第三
2010年6月 其他开发语言大版内专家分月排行榜第三2009年9月 C/C++大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。

参考资料

 

随机推荐