德州扑克顺子概率,炸金花与顺子的概率?

胡说八道(11)
Java(45)
&* 一年又一年,年年过年都是打牌。不是蛮喜欢打牌,赢了固然高兴,燃鹅,总是输啊!
&* 我们这边过年的风俗习惯就是那样得。过年,大人小孩都是打牌。家家户户的杀“家麻雀”
&* 确实,也没什么好做的。只好打麻将,斗地主,炸金花混时间喽。
&* 无奈,过年前后电脑罢工的了八九天,无故的坏了,昨天才好
&* 近日,闲来无事。编了个计算炸金花里面各种牌概率的程序
&* 初步功能实现:
&* 在模拟十万次后得到结果,差不多接近实际情况了
&* ★★★三条的概率为:0.00229
&* ★★★顺金的概率为:0.002096
&* ★★★金花的概率为:0.051402
&* ★★★顺子的概率为:0.03483
&* ★★★对子的概率为:0.00002
&* 事实也证明同花顺的概率要比三条的概率还要低,和以前想的差不多。
&* 网上用古典概率计算的结果为:
&* /link?url=sAumyFo8EBxFxrMFy-fcFyItlhhzdiiBxvkGrGMCO6kZgv5OV0K_1VPv9gOKMI9Z0JGXESvthatpDAQbw_6PQ29XoFvbMhVp7LqeQGZIanW&qq-pf-to=pcqq.group
&*和他的基本一致,他没有包含关系。如金花里面是不包含顺子的
&*☆★☆★☆★有时间再改下,由用户输入三张牌,然后计算他赢的概率为多少。
&*☆★☆★☆★用C#写个窗体界面的,以后发财就可很靠它了。哈哈哈
代码部分:
import java.util.S
public class zjh {
String[] DZ=new String[]{&A&,&2&,&3&,&4&,&5&,&6&,&7&,&8&,&9&,&10&,&J&,&Q&,&K&};
String[] HS=new String[]{&红心&,&黑桃&,&梅花&,&方块&};
String[] data=new String[52];
public static void main(String[] args) {
//初始化,一副新牌
for (int i = 0; i & DZ. i++) {
for (int j = 0; j & HS. j++) {
data[k]=DZ[i]+& &+HS[j];
for (int i = 0; i & data. i++) {
System.out.println(data[i]);
//游戏开始
System.out.println();
System.out.println(&=======炸金花-概率计算=======&);
System.out.print(&★★游戏人数:&);
//模拟概率
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();//几人玩
System.out.println();
double countJH=0;
double countDZ=0;
double countST=0;
double countSZ=0;
double countSJ=0;
//模拟1000次,金花概率
long t1=System.currentTimeMillis();
for (int t = 0; t & 100000; t++) {
String arr[][]=new String[n][3];
int index=0;
for (int i = 0; i & 3; i++) {
for (int j = 0; j & j++) {
arr[j][i]=data[index];
System.out.println(&发牌:&);
for (int i = 0; i & i++) {
System.out.println(&第&+(i+1)+&人牌为:&+arr[i][0]+&,&+arr[i][1]+&,&+arr[i][2]);
for (int i = 0; i & i++) {
String str1[]=arr[i][0].split(& &);
String str2[]=arr[i][1].split(& &);
String str3[]=arr[i][2].split(& &);
String s1=str1[1];
String s2=str2[1];
String s3=str3[1];
String[] suanzi=new String[]{str1[0],str2[0],str3[0]};
//金花,花色全部一样的
if(s1.equals(s2)&&s2.equals(s3)){
countJH++;
if(BoolShunzi(suanzi)){//同花顺,花色相同,且是顺子的
countSJ++;
//对子a==b或者a==c或者b==c
if(str1[0].equals(str2[0])||str1[0].equals(str3[0])||str2[0].equals(str3[0])){
countDZ++;
//三条,只有先是对子,才可能是三条的
if(str1[0].equals(str2[0])&&str1[0].equals(str3[0])){
countST++;
//顺子,对子和顺子是互斥的
else if (BoolShunzi(suanzi)){
countSZ++;
//下一局重新洗牌一下
System.out.println();
double st=countST/(100000*n);
System.out.println(&★★★三条的概率为:&+st);
double sj=countSJ/(100000*n);
System.out.println(&★★★顺金的概率为:&+sj);
double jh=countJH/(100000*n);
System.out.println(&★★★金花的概率为:&+jh);
double sz=countSZ/(100000*n);
System.out.println(&★★★顺子的概率为:&+sz);
double dz=countDZ/(100000*n);
System.out.println(&★★★对子的概率为:&+(dz-st));
//由用户输入,三张牌。判断输赢,
//判断概率:金花,顺子,同花顺,对子,A大等各种情况的概率
//(可采用类似积分,三条10分,同花顺9分,金花8分),分值相同的,再进行细节比较
//。。。。。
System.out.println();
//时间计算
long t2=System.currentTimeMillis();
System.out.println(&☆☆☆模拟十万次用时为:&+(t2-t1)+&毫秒&);
//计算顺子的概率
private static boolean BoolShunzi(String[] shunzi) {
int[] arr=new int[3];
//将AJQK转换成数子
for (int i = 0; i & shunzi. i++) {
arr[i]=Integer.parseInt(shunzi[i]);
}catch(Exception e){
if(shunzi[i].equals(&A&))
else if(shunzi[i].equals(&J&))
arr[i]=11;
else if(shunzi[i].equals(&Q&))
arr[i]=12;
arr[i]=13;
for (int i = 0; i & arr. i++) {
for (int j = 0; j & arr. j++) {
if(arr[i]&arr[j]){
int t=arr[i];
arr[i]=arr[j];
if(arr[0]-arr[1]==1&&arr[1]-arr[2]==1){
//System.out.println(arr[0]+&,&+arr[1]+&,&+arr[2]);
else if(arr[0]==13&&arr[1]==12&&arr[2]==1)//QKA{
//洗牌,一百次的随机交换
private static void getXP() {
for (int i = 0; i & 100; i++) {
//两个随机数,然后交换牌的顺序
int r1=(int)(Math.random()*52);
int r2=(int)(Math.random()*52);
String temp=data[r1];
data[r1]=data[r2];
上个图片,(图片来源QQ空间,eruyouqingquanchunshuyiwai)
zheijiashi,yidaixingdusheng.小伙子,有前途!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:8921次
排名:千里之外
原创:127篇
(4)(20)(22)(13)(16)(59)}

我要回帖

更多关于 炸金花透视扑克牌眼镜 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信