1樓:匿名使用者
它的宣告在stdlib.h標頭檔案中,使用前需要包含這個標頭檔案.
2樓:匿名使用者
在stdlib.h標頭檔案中,使用前需要包含這個標頭檔案.
#include
#include
#include
void main()}
c語言中stdlib標頭檔案是不是包含了srand和rand函式,如果沒有用srand直接用rand是不是每次得到相同隨機數?
3樓:匿名使用者
1 在stdlib.h中,同時包含了srand函式,和rand函式的宣告。
形式為void srand(int value);
int rand(void);
2 如果沒有用srand,在一次程式呼叫rand多次時,每次得到的值是隨機的。
但是如果程式執行多次,每次執行程式時得到的rand結果是相同的。
也就是說,如果不用srand,那麼每次執行程式,多次呼叫rand函式,得到的是一個相同的隨機序列。
4樓:匿名使用者
rand是取得偽隨機數,而srand就是修改隨機種子,不先呼叫srand,隨機出來的就是偽隨機數,都是一樣的。srand只需要呼叫一次就夠了
null其實就是0,time的引數傳進去的是個地址,因此可以傳0進去
5樓:
是的,標頭檔案stdlib.h裡包含了srand和rand函式。如果沒有呼叫srand,那麼rand將產生相同的隨機數“序列”——就是說如果第一次迴圈呼叫rand產生的隨機數序列是88,2,33,55……的話,第二次啟動迴圈呼叫rand產生的隨機數序列仍然是88,2,33,55……產生這一問題的根本原因是偽隨機序列發生器的初始狀態沒有發生變化造成的。
srand函式的功能就是來改變偽隨機序列發生器的初始狀態。srand向偽隨機序列發生器的初始狀態暫存器寫入不同的值(狀態字),就能使rand函式產生不同的序列,就解決了“序列重複”的問題。顯然,人為安排狀態字是不現實的,因為安排了就變不了了。
所以用null來呼叫time函式獲致系統時鐘值轉換成無符號整數數作為srand的引數,這樣每呼叫一次srand都會寫入不同的初始狀態字(因為時鐘每時每刻都是變化的),就達到目的了。
那就算了吧!我不知道與哪個長得像,這裡沒有一個像的,也沒有一個真正講出要用srand的原因。我寫的時候誰的都沒有參考,別說是複製。如果可以,把認為複製的答案弄出來我看看。
6樓:匿名使用者
不用srand的話,每次呼叫rand會有相同的情況,得不到很好的隨機效果
srand ((int)time(null))這麼寫可以是可以null改為0也行,反正只是一個巨集而已
但是一般會規範的寫作srand((unsigned int)time(null));
自定義隨機種子的話,直接srand((unsigned int) 自定義的隨機種子 )
7樓:
你所說都對。
使用前,設定不同的種子,則會得到不同的隨機數。
c++所有標頭檔案所包含的函式 100
source insight無法識別包含在其他檔案的巨集定義,在標頭檔案中明明定義了
我也遇到同樣的問題。問題 只有乙個巨集跟蹤不到,其他巨集正常。解決 1.在定義處 行 下一行重新定義巨集。2.查詢所有引用巨集的行。3.在引用巨集語句處,加幾個空格。原因 猜測是因為source insight 符號集識中找不到巨集。經常改的巨集會遇到這種情況。如果是引用了外部定義的inl檔案,也會...
c 中rand 函式的範圍,c 中rand 函式的範圍 10
rand函式範圍 在某些平臺下 例如 windows rand max 只有 32768。如果需要的範圍大於 32768,那麼指定 min 和 max 引數就可以生成大於 rand max 的數了,或者考慮用 mt rand 來替代它。rand函式不是真正的隨機數生成器,而srand 會設定供ran...
c語言rand函式
90就是產生的隨機數對90取餘,那麼結果肯定是在0到89之間,結果再加上10,不就是10到99之間了 rand函式功能為獲取乙個偽隨機數 偽隨機數的概念下面會有介紹 一 函式名 rand 二 宣告 int rand 三 所在標頭檔案 stdlib.h 四 功能 返回乙個偽隨機數。之所以說是偽隨機數,...