2020 2 3 隨機洗牌程式設計

2021-10-02 12:43:06 字數 1397 閱讀 1615

上機內容:c程式的編寫和執行

上機目的:掌握簡單c程式的編輯、編譯、連線和執行的一般過程

ps:借鑑了同學和網上的思路,感謝。

我的程式:

/*

* 程式的版權和版本宣告部分:

* 檔名稱:test.c

* 作 者:容瀟軍

* 完成日期:2020 年 2 月 3 日

* 版 本 號:v1.0

* 對任務及求解方法的描述部分:

* 輸入描述:無

* 問題描述:請設計乙個隨機洗牌系統,將52張除大小王外的撲克隨機發給4個人 ,並對每個 人手中的牌進行排序後輸出。

排序規則:先按花色排,依次為黑桃、紅桃、梅花、方片,同花色的按點數從小到大排。其中,點數a視作點數1。

輸出格式:每人佔1行,相鄰兩張牌之間用1個空格分開。

* 程式輸出:略

* 問題分析:略

* 演算法設計:略

*/#include #include#include#include#includeusing namespace std;

int main()

}for(i=1;i<=13;)

}for(i=1;i<=13;)

}for(i=1;i<=13;)

}for(i=1;i<=12;i++)//排序

for(j=1;j<=12-i;j++)

}for(i=1;i<=12;i++)

for(j=1;j<=12-i;j++)

}for(i=1;i<=12;i++)

for(j=1;j<=12-i;j++)

}for(i=1;i<=12;i++)

for(j=1;j<=12-i;j++)

}for(i=1;i<=13;i++)//花色賦值

for(i=1;i<=13;i++) printf("%d-%d ",play1[i],code1[i]); printf("\n");//輸出

for(i=1;i<=13;i++) printf("%d-%d ",play2[i],code2[i]); printf("\n");

for(i=1;i<=13;i++) printf("%d-%d ",play3[i],code3[i]); printf("\n");

for(i=1;i<=13;i++) printf("%d-%d ",play4[i],code4[i]); printf("\n");

return 0;

}

執行結果:

心得體會

進一步熟悉了c++與c語言。

知識點總結

陣列運用,隨機函式,布林值以及其初始化。

隨機洗牌演算法

問題 給定乙個有序序列1 n,要你將其完全打亂,要求每個元素在任何乙個位置出現的概率均為1 n。解決方案 依次遍歷陣列,對第n個元素,以1 n的概率與前n個元素中的某個元素互換位置,最後生成的序列即滿足要求,1 n的概率可通過rand n實現。見如下程式 void swap int p,int q ...

隨機洗牌演算法

先看看肖舸老師的文章 隨機洗牌演算法複雜度的比較例項 其實我最初想到的也是那3個方法 1判斷生成的隨機數有沒有重複,2.生成一張布林表,3.雙隨機數。下面給出我的演算法 include include include using namespace std void randcard vector,...

shell實現洗牌隨機

洗牌問題 洗一副撲克,有什麼好辦法?既能洗得均勻,又能洗得快?即相對於乙個檔案來說怎樣 高效率的實現亂序排列?關於洗牌問題,其實已經有了乙個很好的shell解法,這裡另外給三個基於awk的方法,有錯誤之處還請不吝指出。方法一窮舉 類似於窮舉法,構造乙個雜湊來記錄已經列印行出現行的次數,如果出現次數多...