c語言 隨機化演算法

2021-10-24 23:14:05 字數 1653 閱讀 8492

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 方法是一種以概率統計為指導思想的方法,通過使用隨機數來解決許多問題。基本思想 當所求解問題時是一種隨機事件,或者是某個隨機變數的數學期望時,我們通過統計隨機事件出現的頻率,或者得到隨機變數的數字特徵,來得到問題的解。在實際應用中,不論採用確定性演算法,還是隨機化演算...