A 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.
#include <gsl/gsl_rng.h>
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;
gsl_rng_set(r,semente);onde semeste é uma variável do tipo
unsigned long int
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.
gsl_rng_free(r);