Thursday, October 12, 2006

Gerando numéros reais aleatórios entre 0 e 1 em C/C++

Recentemente um amigo me perguntou como
gerar numéros reais aleatorios entre 0 e 1 em C. Investigando
o manual de programação do Linux, descobri uma função
random(), em stdlib.h, que gera números inteiros entre 0 e
RAND_MAX (cujo valor está definido nesta biblioteca) [veja man
random]. Assim, me veio a idéia de criar uma simples macro que
transformasse os valores retornado por random() e RAND_MAX em float e
realizasse a divisão random()/RAND_MAX.

A seguir está o código de
teste que enviei a ele.



//----------------------------------


#include <stdio.h>

#include <stdlib.h> // RAND_MAX é definido em stdlib.h

#define myrand ((float)(random())/(float)(RAND_MAX) ) //macro myrand: gera numeros float entre 0 e 1


int main(){
srandom(time(NULL)); // inicia o gerador de números aleatórios

int i;

// gera 10 numeros aleatorios


for(i=1;i <= 10; i++)
printf("%f\n",myrand);

}

//----------------------------------

Espero que seja útil, pessoal!