Создать случайное четное число между диапазонами - PullRequest
0 голосов
/ 01 августа 2010

ОК. Мне нужно создать четное случайное число от 54 до 212 включительно. Единственный улов в том, что это должно быть сделано в одном выражении. У меня есть класс для генерации случайного числа в пределах диапазона, но, как я уже сказал, я хочу сделать это в одном выражении. Я придумал это, но это не работает правильно. Есть идеи?

int main()
{

    srand( time(NULL));
    int i;

    i =  (rand() % 106) * 2;

    cout << i;


    return 0;
}

1 Ответ

9 голосов
/ 01 августа 2010

Создайте любое число в интервале [27, 106] и умножьте его на 2. Ваша проблема в том, что у вас нет нижней границы.

int i = 2 * (27 + rand() % (106 - 27 + 1))  

Как правило, для генерации случайного числа в [a, b] используйте:

int i = a + rand() % (b - a + 1)

Чтобы понять, почему это работает, попробуйте простые примеры, такие как [2, 4], [3, 7] и т. Д.

...