看板 NTUE-CS101 關於我們 聯絡資訊
交作業的時間本來是一個星期 因為這次作業需要考慮的東西比較多 我跟老師建議改成兩個星期(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
rockmyangel:真是有難度!!! 05/07 20:55
Gary2005123:感謝學長阿!!,最近程式越來越難﹦﹦哭哭阿。 05/07 22:51