Подтвердить что ты не робот

Случайное число С++ в некотором диапазоне

Возможный дубликат:
Генерировать случайные числа равномерно по всему диапазону

Я хочу сгенерировать случайное число в С++ с некоторым диапазоном, допустим, что я хочу иметь число от 25 до 63.

Как я могу это получить.

Спасибо

4b9b3361

Ответ 1

Вы можете использовать случайную функциональность, включенную в дополнения к стандартной библиотеке (TR1). Или вы можете использовать тот же старый метод, который работает в обычном C:

25 + ( std::rand() % ( 63 - 25 + 1 ) )

Ответ 2

Так как никто не опубликовал современный подход С++,

#include <iostream>
#include <random>
int main()
{
    std::random_device rd; // obtain a random number from hardware
    std::mt19937 eng(rd()); // seed the generator
    std::uniform_int_distribution<> distr(25, 63); // define the range

    for(int n=0; n<40; ++n)
        std::cout << distr(eng) << ' '; // generate numbers
}

Ответ 3

int random(int min, int max) //range : [min, max)
{
   static bool first = true;
   if ( first ) 
   {  
      srand(time(NULL)); //seeding for the first time only!
      first = false;
   }
   return min + rand() % ((max + 1) - min);
}

Ответ 4

int range = max - min + 1;
int num = rand() % range + min;

Ответ 5

float RandomFloat(float min, float max)
{
    float r = (float)rand() / (float)RAND_MAX;
    return min + r * (max - min);
}

Ответ 6

Используйте функцию rand:

http://www.cplusplus.com/reference/clibrary/cstdlib/rand/

Цитата:

A typical way to generate pseudo-random numbers in a determined range using rand is to use the modulo of the returned value by the range span and add the initial value of the range:

( value % 100 ) is in the range 0 to 99
( value % 100 + 1 ) is in the range 1 to 100
( value % 30 + 1985 ) is in the range 1985 to 2014