作者yantchen (球童Yanting)
看板NTUE-CS101
标题[课业] 扑克牌作业
时间Thu May 7 04:19:01 2009
交作业的时间本来是一个星期
因为这次作业需要考虑的东西比较多
我跟老师建议改成两个星期(5/19)
你们可以先想想我今天说的花色点数
先写看看 怎麽乱数产生两张牌 比较大小 还有cout他是什麽花色和点数
然後想看看怎麽洗牌
你可以想像一下平常你怎麽洗真的扑克牌
像是 把中间一叠 拿出来 放到最上面
或是 把排分成两边左右手各拿一边 然後把两边牌合在一起
等等
第一种写成程式
for(i=1~52/3){
t=a[i];
a[i]=a[i+52/3];
a[i+52/3]=t;
}
(52/3=17, 所以就是 a[1]和a[18]交换 a[2]和a[19]交换 ... a[17]和a[34]交换)
第二种写成程式
开一个新的阵列 b
for(i=0~52/2-1;i=i+2){
b[2*i]=a[i];
b[2*i+1]=a[i+52/2];
}
这些是用手洗牌的方法 想想你平常怎麽用手洗牌的 就可以转成程式码罗
有人会问
这样会不会洗不乾净
我会说 一定会
因为不一定每一张牌都会交换到 不过你做的次数够多也ok
电脑里面洗牌是用另外一种方法
每次产生一个不重复的1~52的乱数放到阵列里
只要你程式执行的乱数表不同 基本上就不太会选到完全一样的乱数顺序
大家可以练习看看交换牌的方法洗牌 还有想一下乱数顺序的洗牌
下礼拜我会讲一下乱数顺序的程式怎麽写
加油~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.68.15.209
1F:推 rockmyangel:真是有难度!!! 05/07 20:55
2F:推 Gary2005123:感谢学长阿!!,最近程式越来越难﹦﹦哭哭阿。 05/07 22:51