Linguagem de programação c++ dicas e função rand()
Dicas de RAND();
#include <cstdlib> int x;
Números randômicos: x=rand();
Números randômicos de 0 a 60: x=rand()%61;
Números randômicos de 01 a 60: x=rand()%60+1;
Números randômicos de 50 a 200: x=rand()%151+50;
Mudar semente da função rand: srand(número da semente); Em número da semente Geralmente usamos a função time(NULL), segundos do pc. #include <ctime>
Vetor de números aleatórios distintos. (Obs, “x” aqui será a quantidade de posições do vetor. Ex v[5], então, x=5).
- for(int i=0;i<x;i++){
- v[i]=rand();
- for(int n=0;n<i;n++){
- if(v[i]==v[n]) i--;
- }
- }(fazer outro for para imprimir os valores de v[i])
Dúvidas possíveis:
Pq i<x? R: x equivale a uma unidade após a última posição do vetor. Ou seja, se v[5], a última posição vale 4, e x=5. Pode-se usar também i<=4, como i começa com 0 e é acrescido uma unidade (i++ = i+1) o for será executado 5 vezes.
Pq v[i]? R: Como o primeiro for contará x vezes, i indicará a posição do vetor que receberá o número rand.
Pq n<i? R: Inicio dizendo que não pode ser n<=i, pois a condição do if seria sempre verdadeira na última contagem do segundo laço for, ou seja, quando n=i, v[i] será igual a v[n], e diminuirá uma unidade de i. Dará erro no seu programa. Então, porque não n<x ou n<5? É óbvio, quando o primeiro for for executado, i=0, só haverá uma posição declarada do vetor, será o seguinte: 2ºfor(int n=0;n<0;n++) NÃO SERÁ EXECUTADO, pois n não é menor que 0, não é menor que i. Nas seguintes vezes, o segundo for será executado apenas a mesma quantidade de posições declaradas, evitando executar mais vezes que o necessário.
Pq i-- no if? R: Simples, se a condição do if for verdadeira, o valor de alguma posição do vetor foi repetida, então, mandaremos executar novamente o primeiro for com o mesmo valor de i anteriormente executado, quando ele recebeu o valor repetido, e outro valor rand será gerado para a posição do vetor que recebeu o