[課業] 撲克牌作業
交作業的時間本來是一個星期
因為這次作業需要考慮的東西比較多
我跟老師建議改成兩個星期(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
推
05/07 20:55, , 1F
05/07 20:55, 1F
推
05/07 22:51, , 2F
05/07 22:51, 2F