資料結構與演算法之模擬演算法 C 實現

2021-06-27 01:14:22 字數 1471 閱讀 8146

模擬演算法:模擬整個過程,通過改變量學中模型的各種引數,進而觀察變更這些引數所引起過程狀態的變化。

演算法思路:使用隨機函式來模擬自然界中發生的不可**情況。(srand() 和 rand()函式生成隨機數)

模擬演算法也就是將整個過程完完整整的走一遍,題目怎麼敘述的,程式就怎麼執行。

例項一:

猜數字計算機隨機生成乙個1-100的整數,使用者猜測,每次猜測給出不同的提示。

**:

#include #include #include using namespace std;

int main()

else if (guess < num)

}while(guess != num);

count++;

cout << "猜中了!\n";

cout << "共猜了 " << count << " 次\n";

return 0;

}

執行結果:

例項二:模擬擲骰子遊戲

由使用者自己輸入參與人數和骰子的個數,然後計算機隨機生成每一粒骰子的點數然後統計每個人的點數。

**:

#include#include#includeusing namespace std;

void play(int n);

void play(int n)

{ int i,m=0,t=0;

for(i=0; i> people;

if(people == 0) break;

cout << "請輸入骰子的數量:";

cin >> numbers;

if(numbers == 0) break;

for(int i=0; i執行結果:

注:c++產生隨機數的用法

1) 給srand()提供乙個種子,它是乙個unsigned int型別;

2) 呼叫rand(),它會根據提供給srand()的種子值返回乙個隨機數(在0到rand_max之間);

3) 根據需要多次呼叫rand(),從而不間斷地得到新的隨機數;

4) 無論什麼時候,都可以給srand()提供乙個新的種子,從而進一步「隨機化」rand()的輸出結果。

產生一定範圍隨機數的通用表示公式

要取得[a,b)的隨機整數,使用(rand() % (b-a))+ a;

要取得[a,b]的隨機整數,使用(rand() % (b-a+1))+ a;

要取得(a,b]的隨機整數,使用(rand() % (b-a))+ a + 1;

通用公式:a + rand() % n;其中的a是起始值,n是整數的範圍。

資料結構與演算法之演算法

1.乙個問題的解可以分解為幾個子問題的解 2.這個問題與分解之後的子問題,除了資料規模不同,求解思路完全一樣 3.存在遞迴終止條件 假如這裡有 n 個台階,每次你可以跨 1 個台階或者 2 個台階,請問走這 n 個台階有多少種 走法?如果有 7 個台階,你可以 2,2,2,1 這樣子上去,也可以 1...

資料結構與演算法之遞推演算法 C 與PHP實現

資料結構是演算法實現的基礎,演算法總是要依賴於某種資料結構來實現的。往往是在發展一種演算法的時候,構建了適合於這種演算法的資料結構。一種資料結構如果脫離了演算法,也就沒有存在的價值了。演算法的作用 解決任何乙個實際問題,都不可避免地涉及到演算法的問題,通過一定的演算法,得到乙個最優 或較優 的方案。...

資料結構與演算法c 實現(5)之KMP匹配演算法

我們都用過word中的查詢功能,這個查詢功能就是匹配演算法的應用背景。在主串中找到子串,並返回子串在主串中的位置。假設我們的主串是s goodgoogle 子串t google 要想在主串中找到子串最簡單的做法如下 這是另外的一種 實現 includeusing namespace std int ...