Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gyba

Função Randômica Srand()

Recommended Posts

Olá!

O seguinte: não to conseguindo achar essa solução em parte alguma da internet e acho que não é de difícil solução. Preciso colocar uma função srand dentro de um laço(for) para que o programa me gere 3 números aleatórios, um por vez. O que acontece é que nesse código abaixo ele gera sempre os 3 números iguais. Acho que é pq a função srand do jeito que está precisa de pelo menos um segundo de intervalo entre os randoms:

 

 

#include<iostream.h>
#include<conio.h>

int main() {

int num = 0, cont;

for(int t=0;t<3;t++){

srand(time(NULL));
for (cont = 0; cont < 2; cont++)        
num = rand() % 4;                      
cout<<" "<<num<<endl;

 switch(num){
           case 0:
             cout<<"Zero!"<<endl;
             break;
           case 1:
             cout<<"Um!"<<endl;
             break;
           case 2:
             cout<<"Dois!"<<endl;
             break;
           case 3:
             cout<<"Tres!"<<endl;
             break;
           default:
             cout<<"Nada!"<<endl;                
                     }             

}


cin.get();
return(0);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não utiliza srand(time(NULL)) mais de uma vez. Só uma, e ele está no for, então está utilizando mais de uma vez.

 

 

Coloque antes do for. Acho que de todo jeito deve continuar na mesma, mas aprender a prática correta é sempre algo bom...

 

 

Além disso, você não precisa incluir a biblioteca <conio.h>, e você está incluindo a biblioteca <iostream> errado. Em headers da C++, você não põe o ".h".

 

 

 

Outra coisa, se não estou enganado você precisa incluir o header <cstdlib> para usar a função srand() e a função rand(), que vocẽ não incluiu. Então a função não funcionaria, não é? Além disso, para usar a função time() você precisa incluir o header <ctime>, que você não incluiu. Então você não poderia usar a função, não é?

 

 

Também não entendi a sua intenção com esse for:

 

 for (cont = 0; cont < 2; cont++)        

 

 

Corrigindo o código, ficaria assim (não chequei no compilador):

 

#include <iostream>
#include <cstdlib>
#include <ctime>

int main() {

   int num = 0, cont;

   srand(time(NULL));

   for(int t=0;t<3;t++) {
       num = rand() % 4;                      
       cout<<" "<<num<<endl;

       switch(num) {
           case 0:
               cout<<"Zero!"<<endl;
               break;

           case 1:
               cout<<"Um!"<<endl;
               break;

           case 2:
               cout<<"Dois!"<<endl;
               break;

           case 3:
               cout<<"Tres!"<<endl;
               break;

           default:
               cout<<"Nada!"<<endl;                
       }             

   } 

   cin.get();
   return(0);
}

 

 

Test aê ;D

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.