Pesquisar aqui

quarta-feira, 29 de janeiro de 2020

C++ - rand() - Gerar números aleatórios


Muitos programas requerem alguma forma de gerar valores aleatórios.
No C++ existe a função rand que gera números inteiros.

Escrevendo:
rand(), seguido do operador módulo e o número "máximo".

int random = rand() % 100;
É gerado um inteiro entre 0 e 99 e é guardado na variável random.

Como por exemplo, o valor 83.

O mínimo do rand é 0, por isso se eu quiser de 1 a 100, tenho de colocar + 1.

int random = rand() % 100 + 1;

srand
Mas na próxima vez que o rand for chamado, vai ter o mesmo valor. Não vai ser aleatório. Isto porque não colocamos uma seed. Esta é nos permite receber valores completamente aleatórios.

Escrevendo:
srand(time(NULL));

Como estamos a utilizar a função time, temos de incluir a "biblioteca" time.h:
#include <time.h>

Programa exemplo
#include <iostream>
using namespace std;

int main()
{
    int min, max;
    
    srand(time(NULL));
    
    cout<< "Gerador de números aleatórios!" << endl << "Escolhe um mínimo: ";
    cin >> min;
    cout << "Escolhe um máximo: ";
    cin >> max;
    cout << "O número gerado foi: " << min + rand() % max << endl;

    return 0;
}
Este programa pede dois inputs, um número máximo e um número mínimo; e gera um número aleatório entre o máximo e o mínimo.

Exemplo:

Gerador de números aleatórios!
Escolhe um mínimo: 7
Escolhe um máximo: 25673
O número gerado foi: 442

Referências

Sem comentários:

Publicar um comentário

Comente de forma construtiva...

Nota: só um membro deste blogue pode publicar um comentário.