C ++生成一个4位数的随机数

时间:2010-11-01 07:00:20

标签: c++ visual-c++

我需要在C ++中生成一个4位数的随机数

我使用了以下代码

#include<time.h>

int number;

number=rand()%1000;
srand ( time(NULL) );

但它不提供总随机数

3 个答案:

答案 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