====== Números aleatórios com a GNU Scientific Library (GSL) ====== A [[http://www.gnu.org/software/gsl/|GSL]] é a melhor biblioteca de programação científica na linguagem C. E uma das muitas utilidades dela são seus geradores de números pseudo-aleatórios. Que usei recentemente e consiste em alguns passos muito fáceis, vide documentação em [[http://www.gnu.org/software/gsl/manual/html_node/Random-Number-Generation.html]]. Que eu resumo aqui. - **Inclusão da biblioteca**. No cabeçalho do programa use #include - **Alocação do gerador.** Declare um ponteiro com o tipo dessa biblioteca: gsl_rng *r; e crie o espaço na memória r = gsl_rng_alloc(gsl_rng_tipo); onde //tipo// poderá ser substituído pelos nomes dos geradores disponíveis: taus, gfsr4, mt19937, ranlxs0, ranlxs1, mrg, ranlux, ranlxd1, ranlxs2, cmrg, ranlux389, ranlxd2; - **Inicie a semente do gerador** gsl_rng_set(r,semente); onde semeste é uma variável do tipo unsigned long int - **Pronto.** Agora poderá usar por exemplo gsl_rng_uniform_int(r,n); para gerar um número aleatório do tipo //unsigned long int// no intervalo fechado [0,n-1]. Ou se preferir gsl_rng_uniform(r); para números no intervalo [0,1). A função mais simples é a gsl_rng_get(r); que retorna um número aleatório, sempre do tipo inteiro longo sem sinal, entre o inteiro mínimo e máximo do tipo de gerador escolhido, e pode ser guardado para dar continuidade à mesma lista de pseudo-aleatórios do gerador utilizado. - **Para finalizar.** A etiqueta da boa programação manda liberar a memória criada no ponteiro //r//, basta usar gsl_rng_free(r); - **Compilar**. Supondo que já tem a gsl instalada use apenas as //flags// -lgsl -lgslcblas -lm no seu compilador favorito. {{tag>}} ~~LINKBACK~~ ~~DISCUSSION~~