C++: De Aprendiz a Mestre! – Random Numbers
Aprender a programar passa sempre por experimentar código, aprendendo e percebendo o que ele faz na realidade. Não podemos limitar-nos a ler o código e “decorar” o que ele possívelmente fará.
Hoje experimentei 2 casos para a obtenção de números aleatórios.
Obter apenas 1 número aleatório:
1 2 3 4 5 6 7 8 9 10 |
#include<iostream> #include<cstdlib> using namespace std; int main() { int random_number = rand(); cout < < random_number << endl; } |
Para a obtenção de números aleatórios usamos a função rand() que nos permite gerar um número aleatório sem qualquer restrição.
Obter vários números aleatórios:
Usando um ciclo for:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include<iostream> #include<cstdlib> using namespace std; int main() { for (int i = 0; i < 5; i++) { int random_number = rand(); cout << random_number << endl; } } |
Usando um ciclo while:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include<iostream> #include<cstdlib> using namespace std; int main() { int i = 0; while(i < 5) { int random_number = rand(); cout << random_number << endl; i++; } } |
Para obtermos vários números aleatórios basta adicionar um ciclo for ou while ao código já apresentado.
No entanto é possível também gerar números aleatórios num intervalo bem definido.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <cstdlib> #include <ctime> #include <iostream> using namespace std; int main() { srand((int)time(0)); int random_number; for(int i = 0; i < 5; i++) { random_number = (rand()%10) + 1; cout << random_number << endl; } } |
Neste exemplo vamos gerar 5 números aleatórios compreendidos entre o intervalo [0 e 10].
Share
Dezembro 4th, 2013 at 6:56 pm
A função srand() nada tem a ver com intervalos de números, apenas inicializa o gerador de números (pseudo) aleatórios rand(). Pode, e deve (para que a sequência seja sempre diferente), ser usada nos primeiros exemplos.
O que define o limite/intervalo é o operador %, que dá o módulo ou resto da divisão inteira, que no exemplo, com o +1, dá um inteiro entre [1, 10].