2015-04-22 68 views
0

我想生成隨機9位數字,但由於某種原因,我的號碼總是1000 *****。我覺得我的品質不錯,但還有其他事情必須繼續下去?srand()範圍沒有按照預期C++

int SSN = (rand() % 899999999) + 100000000; 
+0

想想你的類型的大小... –

+2

如果你可以使用C++ 11甚至TR1,那麼看看''。這很好。 – Adam

+0

@CarlNorum不要以爲它是一個int大小的問題,但我認爲這是rand()的限制。我只會用ascii編寫一個隨機代碼。謝謝。 「一個32位無符號整數範圍從0到4,294,967,295」 – Xerunix

回答

6

看來,RAND_MAX相當比九位數字少。簡而言之:rand()生成的值對您而言太小。您需要使用不同的RNG。

+0

RAND_MAX是32767. –

+0

哦哇,我不知道有這樣的事情。猜猜我應該檢查。好的,謝謝。在C++中是否還有其他隨機生成器,還是必須自己寫? – Xerunix

+0

@BenjyKessler - 通常,是的,但[並不總是](http://www.delorie.com/gnu/docs/glibc/libc_396.html)。 –