是時候表演真正的洗牌技術了!C語言算法設計之洗撲克

C語言竟然去洗撲克牌了!編程每日一題之亂數排列算法教你洗撲克

是時候表演真正的洗牌技術了!C語言算法設計之洗撲克

完整代碼,以及更多C/C++學習資料,私信“代碼“獲取

洗撲克牌的原理其實與亂數排列是相同的,都是將一組數字(例如1~N)打亂重新排列,只 不過洗撲克牌多了一個花色判斷的動作而已。

解決方案

是時候表演真正的洗牌技術了!C語言算法設計之洗撲克

完整代碼,以及更多C/C++學習資料,私信“代碼“獲取

初學者通常會直接想到,隨機產生1~N的亂數並將之存入陣列中,後來產生的亂數存入陣列 前必須先檢查陣列中是否已有重複的數字,如果有這個數就不存入,再重新產生下一個數,運 氣不好的話,重複的次數就會很多,程式的執行速度就很慢了,這不是一個好方法。

以1~52的亂數排列為例好了,可以將陣列先依序由1到52填入,然後使用一個迴圈走訪陣列, 並隨機產生1~52的亂數,將產生的亂數當作索引取出陣列值,並與目前陣列走訪到的值相交換 , 如此就不用擔心亂數重複的問題了,陣列走訪完畢後,所有的數字也就重新排列了。

是時候表演真正的洗牌技術了!C語言算法設計之洗撲克

完整代碼,以及更多C/C++學習資料,私信“代碼“獲取

至於如何判斷花色?這隻是除法的問題而已,取商數判斷花色,取餘數判斷數字,您可以直接 看程式比較清楚。

源碼流程

看著比較累的化,可以私信我“代碼”觀看完整源碼。

是時候表演真正的洗牌技術了!C語言算法設計之洗撲克

是時候表演真正的洗牌技術了!C語言算法設計之洗撲克

是時候表演真正的洗牌技術了!C語言算法設計之洗撲克

是時候表演真正的洗牌技術了!C語言算法設計之洗撲克

完整代碼,以及更多C/C++學習資料,私信“代碼“獲取

運行結果

是時候表演真正的洗牌技術了!C語言算法設計之洗撲克

完整代碼,以及更多C/C++學習資料,私信“代碼“獲取

更多精彩


分享到:


相關文章: