2011-09-09 60 views
0

所以這裏的代碼:隨機數生成器有關的問題

if(rand_s(&number) != 0) cout << "Random number generator failed!" << endl; 

問題是 - 它意味着程序每一次與此rand_s(&number)表達產生的隨機數大於零輸出故障消息?如果是這樣,我爲什麼要這樣的事情?

// complete code 

unsigned int number = 0; 

cout << "Random values are:" << endl; 
double max = 1000000.0; 

for(int i = 0 ; i<100 ; i++) 
{ 
    if(rand_s(&number) != 0) 
    cout << "Random number generator failed!" << endl; 

    number = static_cast<unsigned int>(static_cast<double>(number)/UINT_MAX*max)+1; 

    // output 
    cout << setw(12) << number; 
    if((i+1) % 5 == 0) cout << endl; 
} 
+0

谷歌搜索'C++'和'rand_r'( - 對谷歌>第三的結果對我來說:HTTP:// msdn.microsoft.com/en-us/library/sxtz2fa8%28v=vs.80%29.aspx)比在這裏打開一個完整的問題要少得多。 –

+0

我相信rand_s會返回一個隨機值,這就是爲什麼我第一次感到困惑的原因。 –

+1

它認真地提高了我自己的生產力,總是先查找某個東西的手冊或先搜索一下。我認爲你的問題就是一個很好的例子);當然,有時谷歌和手冊太困難,過時了,或者什麼;那麼是時候來這裏:) –

回答

6

沒有rand_s返回errno_t所以0表示沒有錯誤。其他任何信息都表明在運行該功能時出現錯誤。

的更多信息可以發現here

1

的函數的返回值是0,如果功能執行成功完成。結果存儲在數字中。請注意,您正在通過地址。

2

here is the link.

rand_s return value: Zero if successful, otherwise, an error code. 

你的隨機值將是: