•
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
|