C ++ Генерация четырехзначного случайного числа - PullRequest
2 голосов
/ 01 ноября 2010

Мне нужно создать случайное число из 4 цифр в C ++

Я использовал следующий код

#include<time.h>

int number;

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

но это не дает общего случайного числа

Ответы [ 3 ]

16 голосов
/ 01 ноября 2010
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

4 голосов
/ 01 ноября 2010

Не забудьте звонить srand только один раз.

Взгляните на Boost.Random , если вам не нравится распределение rand.

// 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 голосов
/ 01 ноября 2010

Вы должны запустить свой генератор случайных чисел srand до того, как вызовет rand()

#include<time.h>

srand( time(NULL) );
int number = rand() % 10000; // number between 0 and 9999
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...