洗撲克牌(亂數排列)

2021-08-19 15:47:06 字數 885 閱讀 6497

/*

洗撲克牌。。。亂數排列

說明:

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

而已。解法:

初學者通常會直接想到,隨機產生1~n的亂數並將之存入陣列中,後來產生的亂數存入陣列前必須先檢查陣列中是否已有重複的數

字,如果有這個數就不存入,再重新產生下乙個數,運氣不好的話,重複的次數就會很多,程式的執行速度就很慢了,這不是乙個

好方法。以1~52的亂數排列為例好了,可以將陣列先依序由1到52填入,然後使用乙個迴圈走訪陣列,並隨機產生1~52的亂數,

將產生的亂數當作索引取出陣列值,並與目前陣列走訪到的值相交 換 ,如此就不用擔心亂數重複的問題了,陣列走訪完畢後,所

有的數字也就重新排列了。至於如何判斷花色?這只是除法的問題而已,取商數判斷花色,取餘數判斷數字,您可以直接看程式比

較清楚*/

#include

#include

#include

#define n 52

int main(void

) srand(time(

0));

for(i = 1; i <= n; i++)

for(i = 1; i <= n; i++)

remain = poker[i] % 3

;

switch

(remain)

if(i % 13 == 0

)

}return0;

}

執行結果:

洗撲克牌(亂數排列)

說明 洗撲克牌的原理其實與亂數排列是相同的,都是將一組數字 例如1 n 打亂重新排列,只不過洗撲克牌多了乙個花色判斷的動作而已。解法 初學者通常會直接想到,隨機產生1 n的亂數並將之存入陣列中,後來產生的亂數存入陣列前必須先檢查陣列中是否已有重複的數字,如果有這個數就不存入,再重新產生下乙個數,運氣...

洗撲克牌 亂數排序

洗撲克牌 亂數排列 說明 洗撲克牌的原理其實與亂數排列是相同的,都是將一組數字 例如1 n 打亂重新排列,只 不過洗撲克牌多了乙個花色判斷的動作而已。解法 初學者通常會直接想到,隨機產生1 n的亂數並將之存入陣列中,後來產生的亂數存入陣列 前必須先檢查陣列中是否已有重複的數字,如果有這個數就不存入,...

程式模擬洗撲克牌(演算法)

前提 一副撲克牌有54張,因此我們可以乙個整型陣列array 54 或者map來儲存,a 用0 3,2 用4 7,3 用8 11.k 用48 51,小鬼用52,大鬼用53表示。關於花色,我們可以這樣表示 4i表示紅桃,4i 1表示黑桃,4i 2表示梅花,4i 3表示方塊 0 i 12 這樣的話,就退...