C 實踐參考 洗牌(范型程式設計)

2021-07-12 07:36:06 字數 1862 閱讀 4838

【專案2:洗牌】

在撲克牌遊戲中,每次遊戲開始都要求把54張牌重新排列一下,稱為洗牌。試編寫程式將一副撲克牌(用54個整數1~54表示)隨機洗好後,順序輸出54張牌的情況。

參考介面:

參考解答(共4種,可作為程式閱讀,品味用stl解決問題的方法,必要時,請查詢相關手冊)

解法1:初始化乙個 vector,順序加入所有牌,即整數1~54。然後從容器中隨機抽取乙個加到另乙個vector中,這個過程一共執行54次。

#include 

#include

#include

#include

#include

#include

using

namespace

std;

using

namespace

std;

typedef

vector

intvector;

typedef

unsigned

int vindex;

void vectorshuffle(intvector &unshuffled,intvector &shuffled)

}int main()

cout

<

<

0;}

解法2:相同思路,用list

#include 

#include

#include

#include

#include

#include

using

namespace

std;

typedef

list

intlist;

typedef

unsigned

int vindex;

void listshuffle(intlist &unshuffled,intlist &shuffled)

shuffled.push_back(*iter);

unshuffled.erase(iter);

}}int main()

cout

<

<

0;}

解法3:隨機交換兩個位置的元素來洗牌。函式中time是要執行交換的次數,如果是54張牌的話,交換次數大於27的話就已經表現出很隨機的排列了。

#include 

#include

#include

#include

#include

using

namespace

std;

typedef

vector

intvector;

void swapshuffle(intvector &datas, int time)

}int main()

cout

<

<100);

cout

<

0;}

解法4:採用stl的 random_shuffle 演算法

#include 

#include

#include

#include

#include

using

namespace

std;

int main()

cout

<

<

0;}

范型程式設計 洗牌

在撲克牌遊戲中,每次遊戲開始都要求把54張牌重新排列一下,稱為洗牌。試編寫程式將一副撲克牌 用54個整數1 54表示 隨機洗好後,順序輸出54張牌的情況。4種方法來品味如何用stl解決問題 解法1 初始化乙個 vector,順序加入所有牌,即整數1 54。然後從容器中隨機抽取乙個加到另乙個vecto...

c 實踐參考 范型程式

all right reserved.檔名稱 test.cpp 完成日期 2016年6月22日 版本號 v1.0 問題描述 程式輸入 程式輸出 知識點總結 stl對這個序列可以進行查詢,插入刪除序列中的任意乙個元素,而完成這些操作的時間同這個序列中元素個數的對數成比例關係,並且當游標指向乙個已刪除的...

c語言討論 范型程式設計

c語言中使用乙個變數之前要對其進行定義,那麼首先來看一下具體的乙個變數的定義。1.inta 10 2.charchartest 3.floatb 1.0 4.regest doublex 5.static int int ptr null 6.char words 10 10 1.c語言中型別及其作...