【專案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語言中型別及其作...