segunda-feira, 15 de maio de 2006

Gerador de números aleatórios em C

Para Gerar números aleatórios em C entre zero e um limite máximo (menor que 0x07FF,
utilize a função abaixo;

retorno: inteiro entre zero e limiteMax .
Precisa incluir as bibliotecas time.h e math.h


int GeraNumeroAleatorio (int limiteMax)
{

int x;
float tmp;
srand( (unsigned)time( NULL ) );
x = rand();
if (x > limiteMax)
{
tmp = ((float)x/(float)RAND_MAX) * limiteMax;
x = floor(tmp);

}
return x;

}

3 comentários:

Juliano Heyse disse...

Em C#:

public int GeraNumeroAleatorio(int LimiteMaximo)
{
int x;
Random rand = new Random();
x = rand.Next(LimiteMaximo);
return x;
}

ou, melhor ainda:

public int GeraNumeroAleatorio(int LimiteMinimo, int LimiteMaximo)
{
int x;
Random rand = new Random();
x = rand.Next(LimiteMinimo, LimiteMaximo);
return x;
}

Só uma contribuiçãozinha extra. HEHEHE!!

Valdir Noll disse...

Grande Juli:

Obrigado pela contribuição...

Serve também para mostrar como um código escrito em C# é melhor:
a) é mais claro;
b) já instancia uma classe que por sí só tem diferentes métodos, já testada e que funciona
c) usa alocação dinâmica de memória o que permite gerenciar melhor a memória.


Portanto, melhor escrever em C# do que em ANSI C...

Abraços.

Tchê.

Juliano Heyse disse...

Na verdade é tudo uma questão de objetos prontos em biblioteca. A classe Random já é nativa do Namespace System e aí tudo fica mais fácil.