Ir ao conteúdo
  • Cadastre-se

Problemas com função srand() e Randomize() no CodeBlocks Windows.


Visitante

Posts recomendados

Olá pessoal!

Alguém poderia me ajudar com esse programa?

Tenho que sortear números aleatórios, mas meu programa não está fazendo isso; ele sempre sorteia o mesmo número e não sei se estou usando as funções do modo certo, pois eu vi fazerem assim no Linux.

Desde já agradeço.

Segue o código:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int RandomInteger( int low, int high);

void Randomize( void);

int main()

{

int inferior,superior;

int palpite,sorteio,acerto;

char controle;

int tempo;

inferior = 1;

superior = 10;

controle = 's';

while (controle == 's'){

tempo=time(0);

printf("%d", tempo);

Randomize();

printf("%d", tempo);

sorteio = RandomInteger(inferior,superior);

Randomize( );

printf("Bem Vindo!\n");

acerto = 0;

while (!acerto){

printf("Adivinhe o numero entre %d e %d: ",inferior,superior);

scanf("%d", &palpite);

if (palpite == sorteio){

printf("Você acertou!\n");

printf("O numero e: %d\n",sorteio);

acerto = 1;

}

else{

printf("Você errou!\n");

if (palpite < sorteio){

printf("Valor muito baixo\n");

}

else{

printf("Valor muito alto\n");

}

}

}

printf("Digite 's' para continuar e 'f' para terminar: ");

fflush(stdin);

scanf("%c", &controle);

}

printf("Fim do jogo!\n");

return 0;

}

int RandomInteger( int low, int high)

{

int k;

double d;

d = (double) rand( ) / ((double) RAND_MAX + 1);

k = d * (high - low + 1);

return low + k;

}

// A função Randomize inicializa o gerador de números

// aleatórios de modo que os resultados das

// invocações de RandomInteger seja imprevisível.

void Randomize( void)

{

srand( time(0));

}

Link para o comentário
Compartilhar em outros sites

Boa tarde Alsm o problema é que você está utilizando a mesma semente para gerar o número aleatório, como o Edmorte disse você pode chamar uma única vez no inicio do programa. Por exemplo antes do WHILE.


printf("\n%d\n", sorteio);
Randomize();
while (controle == 's'){
tempo=time(0);
printf("%d", tempo);

Ai nunca mais chame Randomize(); se não vai repetir a ordem dos random mesmo.

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...