2015-05-02 35 views
0

失敗,我試圖用dlfcn.h(d調用rand的dlsym()使用情況蘭特

我有this code,根據項目我的工作。最核心的問題,我是用這個時這樣,它編譯,甚至運行,但它的輸出是

cif: cif is OK 
rand val: 16807 

rand val值是16807每一次,相反的是rand是應該做的。我在做什麼錯在這裏?

+0

你有沒有用srand()設置種子? –

回答

1

你上請撥打rand()一次。如果未加種子,rand()可能會使用靜態種子,可能爲零(庫依賴)。

進口srand過,並用合理的隨機數量的種子它 - 例如,你可以做

timeval tv; 
gettimeofday(&tv, NULL); 
srand_ptr(tv.tv_sec^tv.tv_usec); 

與當前時間(秒和毫秒)種子吧。

或者,在OS X上,考慮使用arc4random代替,該代碼會自動播種,並且通常會生成更好的隨機數。

+0

謝謝,這有幫助。 – jjpe