扑克牌洗牌的算法 常用的扑克牌洗牌方法

这段时间正在做一款扑克牌的游戏,关于洗牌的随机性做了一下研究.也发布上来给大家看看通常有几种方法来实现扑克的随机性: 1、需要时计算随机的扑克牌。(这种算法需要排除已经出过的牌然后再计算随机因子或者直接取出扑克牌比较,再和前面的扑克牌进行比较,直到不重复为止) 优点:不需要存储整副扑克,资源小,在牌数少的情况下,性能比较好。 缺点:随着已出现扑克牌的数量越来越多,取得随机因子或者重复比较的次数会增加,重复的操作会明显增加,当已现扑克牌的数量>50%时就越发明显。 2、开始就随机计算好的整副扑克牌的位置。 优点:操作简单,算好以后就直接从扑克牌数组或者集合中取数就可以了,不需要额外的计算牌的重复,编写程序也会方便一些。 缺点:需要专门一个数组或者集合空间来储存扑克牌,资源稍大一点,如果扑克牌数目很多副的情况下就会明显一些。 下面主要讨论一下如何的开始就随机计算好一整副牌并混淆其扑克的位置。 1、准备一个随机类。 private GameCardCalc CardCalc;//随机类 2、扑克牌集合,扑克牌构造通常用两种方式实现,一种是枚举,一种是结构。我采用的是结构。 private structCard[] cardCollection=new structCard[52];//所有产生的扑克牌集合。 3、扑克牌的初始化,把所有52张牌可以随机或者顺序的放到数组或者集合中去。 private initializtion()......; 4、洗牌,这种是我推荐的,效果很好,通过进行牌与牌之间的多次位置交换,以达到牌与牌位置混淆的结果,由于是完整的牌间位置调换,所以避免了校验牌的过程。 /// <summary>
/// 洗牌
/// </summary>
private void Riffle()
{
for(int m=1;m<=2;m++) //洗两次,自己可以决定洗的次数
{
for(int i=0;i<52;i++)
{
int j=CardCalc.Next(0,51);
//交换扑克牌
if (i!=j)
{
exChangCard(ref cardCollection[i]
,ref cardCollection[j]);
}
}
}
} /// <summary>
扑克牌洗牌的算法 常用的扑克牌洗牌方法
/// 交换扑克牌
/// </summary>
/// <param name="a">扑克牌1</param>
/// <param name="b">扑克牌2</param>
public static void exChangCard(ref structCard a,ref structCardb)
{
structCard c=a;
a=b;
b=c; }洗牌的过程就这样实现了。如果大家有更好的方法或者有什么建议,也可以相互探讨和交流一下!

  

爱华网本文地址 » http://www.413yy.cn/a/25101012/120826.html

更多阅读

雪菊的功效与食用方法 芦荟食用方法和功效

昆仑雪菊又名天山雪菊、冰山雪菊、高寒香菊。雪菊生长在天山海拔2000米以上的高寒山区,野生草本植物,气候寒冷潮湿,空气稀薄,生态环境独特。雪菊的功效与食用方法——工具/原料雪菊雪菊的功效与食用方法——雪菊功效雪菊的功效与食用

莲子的作用及食用方法 石榴的功效与作用

莲子性味甘平,每500克莲子中含有热量1500大卡左右,莲子的功效主要有:化痰止咳,降血压血脂,还可以壮阳,补脑安神之功效。莲子的作用及食用方法——莲子的功效性平、味甘涩,入心、脾、肾经;补脾止泻,益肾涩清,养心安神。用于脾虚久泻,遗精带下,心

抑郁症的治疗——心理治疗方法 心理抑郁症怎么样治疗

治疗抑郁症常用的治疗方法有哪些,下面介绍几种心理治疗法,合用下面的心理治疗方法,可以有很好辅助治疗效果。抑郁症的治疗——心理治疗方法——步骤/方法抑郁症的治疗——心理治疗方法 1、支持性心理治疗法,又称一般性心理治疗,常用的技

祛痘的几种日常方法 那种方法祛痘好用

祛痘的几种日常方法——简介中医认为,面部是脏腑的反射区,当身体内部的肝、脾、胃等脏腑出现问题,反映在脸上,就会在各个相应的部位长出个头、大小、性质不同的“夏闷痘”。想要对付它们,除了使用日常基础护理方案外,试试中医方法以内调外

丰胸的最快食疗方法 什么水果丰胸最有效

丰满的胸部是吸引异性的本钱,更可以在同性中傲视群雄,让所有人都羡慕和妒忌。为了能够摆脱飞机场的称号,很多女生想尽各种办法去丰胸,今天小编带来丰胸的最快食疗方法,美味食物练就绝世深V!丰胸的最快食疗方法一:鳗鱼便当说到丰胸的鱼类

声明:《扑克牌洗牌的算法 常用的扑克牌洗牌方法》为网友偑吹散啲誓誩分享!如侵犯到您的合法权益请联系我们删除