我需要在C ++中生成一个4位数的随机数
我使用了以下代码
#include<time.h>
int number;
number=rand()%1000;
srand ( time(NULL) );
但它不提供总随机数
答案 0 :(得分:16)
number = rand() % 9000 + 1000;
有9000个四位数字,对吗?从1000到9999开始。rand()
将返回从0到RAND_MAX
的随机数。 rand() % 9000
将从0到8999,rand() % 9000 + 1000;
将从1000到9999。通常,当您想要从a到b的随机数时,公式为
rand() % (b - a + 1) + a
另请注意, srand()
只应在任何rand()
之前调用。
如果你做认为0到999之间的数字是“四位数”,那么在这种情况下只需使用rand() % 10000
。我不认为它们是,但我覆盖所有基础,以防万一。
HTH
答案 1 :(得分:3)
请务必仅拨打srand
一次。
如果您不喜欢rand
的分发,请查看Boost.Random。
// produces randomness out of thin air
boost::mt19937 rng;
// distribution that maps to 1000..9999
boost::uniform_int<> fourdigits(1000,9999);
// glues randomness with mapping
boost::variate_generator<boost::mt19937&, boost::uniform_int<> > die(rng, fourdigits);
// simulate rolling a die
int x = die();
答案 2 :(得分:2)
您必须在调用srand
之前为随机生成器rand()
播种
#include<time.h>
srand( time(NULL) );
int number = rand() % 10000; // number between 0 and 9999