解析游戏中的简单概率算法
什么是概率算法?
概率算法也叫隨機化算法。概率算法允許算法在執行過程中隨機地選擇下一個計算步驟。在很多情況下,算法在執行過程中面臨選擇時,隨機性選擇比最優選擇省時,因此概率算法可以在很大程度上降低算法的復雜度。
概率算法的一個基本特征是對所求解問題的同一實例用同一概率算法求解兩次可能得到完全不同的效果。這兩次求解問題所需的時間甚至所得到的結果可能會有相當大的差別。
應用
用于游戲中的寶箱,陷阱之類的隨機生成,可以改變生成的幾率。
思想
運用產生隨機數的函數rand()來隨機生成一個數,和產生寶箱或陷阱的概率進行比較,如果小于就生成寶箱或陷阱,反之則不生成。
注意
rand()函數
rand(產生隨機數)
表頭文件: #include<stdlib.h>
定義函數 :int rand(void)
函數說明 :
因為rand() 的內部實現是用線性同余法做的,它不是真的隨機數,只不過是因為其周期特別長,所以有一定的范圍里可看成是隨機的,rand() 會返回一隨機數值,范圍在 0 至 RAND_MAX 間。
在調用此函數產生隨機數前,必須先利用 srand()設置好隨機數種子,如果未設隨機數種子,rand()在調用時會自動設隨機數種子為 1。
rand()產生的是假隨機數字,每次執行時是相同的。若要不同,以不同的值來初始化它,初始化的函數就是 srand()。
使用srand函數要包含time.h頭文件,然后使用srand(time(0))來使用當前時間使隨機數發生器隨機化,這樣就可以保證每兩次運行時可以得到不同的隨機數序列,同時這要求程序的兩次運行的間隔超過1秒。
返回值:
返回 0 至 RAND_MAX 之間的隨機整數值,RAND_MAX 的范圍最少是在 32767 之間(int),即雙字節(16位數)。
若用unsigned int 雙字節是 65535,四字節是 4294967295 的整數范圍。
0~RAND_MAX 每個數字被選中的機率是相同的。
代碼實現
#include<iostream> #include<stdlib.h> #include<time.h> using namespace std;int main() {int TreasureBox = 20;//寶箱掉落的概率為20srand(time(NULL));//使這個初始化種子保持著時刻不同int pr = rand() % 101;//0-100if (pr < TreasureBox){cout << "掉落寶箱"<<endl;return 1;}else{cout << "不掉落寶箱"<<endl;return 0;}}這只是一個簡單的概率算法,如有意見歡迎在下面評論提出!
總結
以上是生活随笔為你收集整理的解析游戏中的简单概率算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: excel熵值法计算权重_熵权法评价估计
- 下一篇: 蒙特卡罗类型概率算法