srand((unsigned int)time(null));
若不隨機則生成的都為1 相同值
做產生隨機數的種子;
x=(double)rand()/rand_max;
rand()後若為/則是隨機生成0~1之間的數
若為%則是生成0~rand_max之間的數(rand_max為最大值32767)
rand()前為產生的隨機數的型別;
rand()%n+m;產生m到n之間的整數;
#include
#include
int main(
)}
1.randomize()用於初始化隨機數發生器
2.random()每次產生不同的隨機數;
3.在ansi c++中沒有包括randomize函式和random函式
#include
#include
int main(
)}
1.在0~1之間產生隨機數x,y
2.設產生n次隨機數,隨機數產生在s』為m次
//求π
#include
#include
#include
int main(
) printf(
"%d ",m)
;//在扇形內的值;
printf(
"%.4f",4.0*m/n)
;//π
return 0;
}
洗牌——建立乙個陣列存放54個不重複的隨機數;
發牌——建立兩個字元陣列存放花色和牌的點數,將陣列中的數導到花色和牌的點數的字元陣列(花色=隨機數%4;牌點數=隨機數%13)
//洗牌,發牌;
#include
#include
#include
#define n 60
void xipai(int pai[n]);
void fapai(int pai[n]);
int main()
void xipai(int pai[n]
)//陣列中:修改main函式傳遞到子函式的陣列 也就修改了main函式 }}
void fapai(int pai[n]
),,,
};//這裡黑桃··· (乙個漢字是兩個字元,兩個漢字是4個字元 另外還有「」也佔字元位置)所以需要些二維陣列 不然會超過申請的空間;
char dian[13]
[3]=
; for(int i=1;i<=54;i++)
if(pai[i]
==54)
printf(
"%s %s\n",hua[pai[i]%4],dian[pai[i]%13]
);//牌點數除以13取餘正好數 可以的到牌的點數 除以4取餘正好可以在四種花色中選}}
隨機化演算法
隨機化演算法的主要目的是希望讓隨機發生在演算法上,而不是發生在輸入分布上,這樣的話,沒有特別的輸入會引起我們的演算法的最壞情況。即使你最壞的敵人也無法產生最壞的輸入陣列。因為隨機排列使得輸入次序不再相關。只有在隨機數生成器產生乙個不走運的排列時,隨機演算法才會執行得很差。一.隨機優先順序陣列法 我們...
隨機化演算法基礎
隨機化演算法在分析某些涉及概率分析的問題上具有重要意義,因為輸入的分布是我們不能預知的,我們想讓分析的問題達到乙個平均的狀態,就得依靠隨機化,把輸入分布重新排列,使之成為乙個脫離其他外界因數的排列,同時要保證出現這個排列的概率為1 n 下面,有兩個常用的演算法來實現輸入分布的隨機化,以給定的輸入陣列...
蒙特卡羅 隨機化演算法
蒙特卡羅 monte carlo 方法是一種以概率統計為指導思想的方法,通過使用隨機數來解決許多問題。基本思想 當所求解問題時是一種隨機事件,或者是某個隨機變數的數學期望時,我們通過統計隨機事件出現的頻率,或者得到隨機變數的數字特徵,來得到問題的解。在實際應用中,不論採用確定性演算法,還是隨機化演算...