2015-04-22 111 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)。 –