MEDIEVAL 0 Denunciar post Postado Maio 25, 2016 Boa tarde Pessoal estou desenvolvendo um programa de sorteio em C ansi para um trabalho da faculdade. Ele está funcionando, mas com um problema que não consigo identificar, a cada nova compilação ele sorteia um número diferente, mas se eu chamar a função várias vezes e compilar eles sorteia o mesmo número. compilação 1 =========== Número 1: 18 Número 2: 18 Número 3: 18 Número 4: 18 Número 5: 18 Número 6: 18 Número 7: 18 Número 8: 18 compilação 2 =========== Número 1: 74 Número 2: 74 Número 3: 74 Número 4: 74 Número 5: 74 Número 6: 74 Número 7: 74 Número 8: 74 Alguém tem alguma ideia do que pode estar errado. Segue o código: #include <stdio.h> #include <stdlib.h> #include <time.h> int sorteio(); int main(void) { printf("Número 1: %d\n", sorteio()); printf("Número 2: %d\n", sorteio()); printf("Número 3: %d\n", sorteio()); printf("Número 4: %d\n", sorteio()); printf("Número 5: %d\n", sorteio()); printf("Número 6: %d\n", sorteio()); printf("Número 7: %d\n", sorteio()); printf("Número 8: %d\n", sorteio()); return EXIT_SUCCESS; } int sorteio(){ int i = 0; int cont = 0; srand( (unsigned)time(NULL) ); do { i = rand()%100; cont++; if(i == cont){ return i; } }while(i != cont); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
pedropgomes 4 Denunciar post Postado Maio 25, 2016 #include <stdio.h> #include <stdlib.h> #include <time.h> int sorteio(); int main(void) { srand(time(NULL)); printf("Número 1: %d\n", sorteio()); printf("Número 2: %d\n", sorteio()); printf("Número 3: %d\n", sorteio()); printf("Número 4: %d\n", sorteio()); printf("Número 5: %d\n", sorteio()); printf("Número 6: %d\n", sorteio()); printf("Número 7: %d\n", sorteio()); printf("Número 8: %d\n", sorteio()); return EXIT_SUCCESS; } int sorteio(){ int i = 0; int cont = 0; do { i = rand()%100; cont += 1; if(cont == 100){ cont = 0; } if(i == cont){ break; } }while(i != cont); return i; } Cara colocquei a semente do random na função principal! e fiz mais umas alteração ai! olha ai se te ajudei! Compartilhar este post Link para o post Compartilhar em outros sites
MEDIEVAL 0 Denunciar post Postado Maio 25, 2016 Cara, valeu a tentativa, mas deu no mesmo saca aí Número 1: 57 Número 2: 57 Número 3: 57 Número 4: 57 Número 5: 57 Número 6: 57 Número 7: 57 Número 8: 57 Compartilhar este post Link para o post Compartilhar em outros sites
pedropgomes 4 Denunciar post Postado Maio 26, 2016 cara pois eu compilei de novo no code::Blocks e tá funcionanado! e se você n quer que os valores repitam e que o sorteio esteja limitado até o número 100, tem que usar vetor! :D joga meu código nesse site aqui: https://www.codechef.com/ide; coloca pra compilar na linguagem C e olha ai como tá funcionando! só que ainda tem uma probabilidade de repetir devido a lógica! Compartilhar este post Link para o post Compartilhar em outros sites
freak1Day 1 Denunciar post Postado Maio 28, 2016 Era so pesquisar o funcionamento de srand, codigo: #include <stdio.h> #include <stdlib.h> #include <time.h> int sorteio(); int main(void) { srand( time(NULL) ); printf("Número 1: %d\n", sorteio()); printf("Número 2: %d\n", sorteio()); printf("Número 3: %d\n", sorteio()); printf("Número 4: %d\n", sorteio()); printf("Número 5: %d\n", sorteio()); printf("Número 6: %d\n", sorteio()); printf("Número 7: %d\n", sorteio()); printf("Número 8: %d\n", sorteio()); return EXIT_SUCCESS; } int sorteio(){ return rand()%100; } Compartilhar este post Link para o post Compartilhar em outros sites
Wilkyn Fernandes Taborda 0 Denunciar post Postado Outubro 31, 2019 O seu programa mostra sempre o mesmo número no sorteio por que a função tempo retorna um número em segundos baseado no horário e data do computador e como a função randômica pega esse número de segundos para fazer o cálculo e dar o número sorteado então se não houver uma forma de aguardar um pouco de tempo entre um sorteio e outro o número de segundos repassado para a função randômica será o mesmo então sempre irão ser sorteados os mesmos números. Resumindo: o seu programa sempre exibe os mesmos números por que não há um tempo de espera entre um sorteio e outro para que esses números se modifiquem. Compartilhar este post Link para o post Compartilhar em outros sites