模擬演算法:模擬整個過程,通過改變量學中模型的各種引數,進而觀察變更這些引數所引起過程狀態的變化。
演算法思路:使用隨機函式來模擬自然界中發生的不可**情況。(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 ...