Se stai lavorando su sistemi unix o unix-like, puoi usare il device /dev/random o /dev/urandom (random(4), urandom(4)) e fare qualcosa di simile:

codice:
int
urandint(void)
{
	FILE *devurandom;
	int randomint;
	if( (devurandom = fopen("/dev/urandom", "rb")) == NULL )
	{
		fprintf(stderr, "Impossibile accedere al device /dev/urandom\n");
		exit(1);
	}	
	fread(&randomint, sizeof(int), 1, devurandom);
	fclose(devurandom);
	return abs(randomint);
}
ovviamente la funzione è da chiamare in un ciclo..