我想生成随机9位数字,但由于某种原因,我的号码总是1000 *****。我觉得我的品质不错,但还有其他事情必须继续下去?srand()范围没有按照预期C++
int SSN = (rand() % 899999999) + 100000000;
我想生成随机9位数字,但由于某种原因,我的号码总是1000 *****。我觉得我的品质不错,但还有其他事情必须继续下去?srand()范围没有按照预期C++
int SSN = (rand() % 899999999) + 100000000;
看来,RAND_MAX
相当比九位数字少。简而言之:rand()
生成的值对您而言太小。您需要使用不同的RNG。
RAND_MAX是32767. –
哦哇,我不知道有这样的事情。猜猜我应该检查。好的,谢谢。在C++中是否还有其他随机生成器,还是必须自己写? – Xerunix
@BenjyKessler - 通常,是的,但[并不总是](http://www.delorie.com/gnu/docs/glibc/libc_396.html)。 –
想想你的类型的大小... –
如果你可以使用C++ 11甚至TR1,那么看看''。这很好。 –
Adam
@CarlNorum不要以为它是一个int大小的问题,但我认为这是rand()的限制。我只会用ascii编写一个随机代码。谢谢。 “一个32位无符号整数范围从0到4,294,967,295” – Xerunix