為了使rand的結(jié)果更“真”一些,也就是令其返回值更具有隨機性(不確定性),C語言在stdlib.h中還提供了srand函數(shù),通過該函數(shù)可以設置一個隨機數(shù)種子,一般用當前時間的毫秒數(shù)來做參數(shù)。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供榕城網(wǎng)站建設、榕城做網(wǎng)站、榕城網(wǎng)站設計、榕城網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、榕城企業(yè)網(wǎng)站模板建站服務,十多年榕城做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
c語言隨機數(shù)函數(shù)是 rand()若要輸出1~10之間的隨機數(shù),可用rand()%10+1。
rand()rand()函數(shù)用來產(chǎn)生隨機數(shù),但是,rand()的內(nèi)部實現(xiàn)是用線性同余法實現(xiàn)的,是偽隨機數(shù),由于周期較長,因此在一定范圍內(nèi)可以看成是隨機的。
C語言中生成1個0到1的隨機數(shù)可以執(zhí)行語句:float b=rand()/(RAND_MAX+0);解析:標準C庫中函數(shù)rand()可以生成0~RAND_MAX之間的一個隨機數(shù),其中RAND_MAX 是stdlib.h 中定義的一個整數(shù),它與系統(tǒng)有關。
C語言隨機函數(shù)主要用于實現(xiàn)一組隨機數(shù)的生成。
在C語言中,rand()函數(shù)可以用來產(chǎn)生隨機數(shù),但是這不是真真意義上的隨機數(shù),是一個偽隨機數(shù),是根據(jù)一個數(shù),可以稱它為種子。
1、C++中用來產(chǎn)生隨機數(shù)的函數(shù)為rand(), 其返回值為整數(shù)。而0到1之間的隨機數(shù),明顯是浮點數(shù)。這樣無法直接產(chǎn)生。于是,必須經(jīng)過轉(zhuǎn)換。
2、可以寫一個函數(shù),利用math.h中的rand來產(chǎn)生隨機浮點數(shù)。
3、int main(){ int i,r;int a=0,b=0;//a,b分別用來統(tǒng)計產(chǎn)生0,1的個數(shù)。for(i=0;i1000;i++){ srand(1000*i*16807*time(NULL));//隨機數(shù)的產(chǎn)生,如果只是用time(NULL)做種子的話會產(chǎn)生相同的隨機數(shù)的。
4、先用當前時間設置種子,即 srand(time(NULL));然后要得到0到1之前的,可以 double i = rand()*0/RAND_MAX;同樣,你要得到1應該是rand()/0,否則兩個整數(shù)相除,得到的是整除的結(jié)果,不是double型。
time(time_t time)里面的time_t time,也就是給指針賦值個0,就是:time = null,是允許的。
下面是用C產(chǎn)生0-9的隨機數(shù),rand()函數(shù)產(chǎn)生的是偽隨機數(shù),反復調(diào)用函數(shù)rand所產(chǎn)生的一系列數(shù)似乎是隨機的,但每次執(zhí)行程序所產(chǎn)生的序列則是重復的。
這種是算法問題,有很多中辦法啊,比如你定義一個a[10]里面放10個數(shù),然后你設計一個函數(shù),函數(shù)里隨機生成一個0-9的隨機數(shù)i,然后a[0]和a[i]交換,然后在你20次循環(huán)的一次循環(huán)里,跑100次這個函數(shù),生成一組新數(shù)組。
srand((int)time(NULL));設定隨機數(shù)種子rand()%100;產(chǎn)生0-99的隨機數(shù)。高級點的,假如要產(chǎn)生16-59之間的數(shù),你可以這樣寫:rand()%44+16(這里44由59-16+1得到)。