C++
Home

A função Random

Para gerar números aleatórios em C++ usamos a função rand, que gera um inteiro entre 0 e RAND_MAX.

Função de <cstdlib> o valor de RAND_MAX é o valor máximo de um inteiro.. ou seja, 32767.

O padrão define (em 7.20.2.1): "The value of the RAND_MAX macro shall
be at least 32767". Mas essa macro pode ter valores maiores. E de modo
algum está atrelada ao tamanho de um int.

C++ oferece um random interessante quando compilamos. Quando usamos apenas rand em nosso programa, o número gerado será sempre o mesmo, o que possibilita que seje feito um teste de mesa para verificar erros.

Considere:

i = rand(); // gera de 0 a 32767

E para gerar de 0 a 100 ???
Para isso usamos o mod.

i = rand() % 100; // entre 0 e 100

De 6 até 20

i = 6 + rand() % 20 // entre 6 e 20

Neste caso 20 é chamado de fator de escala.

Para gerar números realmente aleatórios, temos que usar o comando srand em conjunto com a função time, que pega o tempo do relógio para gerar um número sempre aleatório.

A função time provem da biblioteca <ctime>.

Observe um exemplo completo:

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

#include <ctime> // biblioteca da hora

int aleatorio( int ); // prototipo de aleatorio

int main()
{
   int numero = 0;

   cout << "Informe o maximo numero para gerar um outro aleatorio"
          << endl;
   cin >> numero;

   srand( time(0) ); // determina a randomização

   cout << aleatorio( numero )
          << endl;

   cin;

   return 0;
}

int aleatorio ( int valor )
{
   int final = 0;

   if (valor == -1)
   {
      final = rand() % RAND_MAX;
   }
   else
   {
      final = 1 + rand() % valor; // entre 5 e valor
   }

   return final;
}

Perguntas??? Email