per i numeri quasi-casuali c'è la funzione standard "rand", facente parte della standard library, che ritorna un intero compreso tra 0 e RAND_MAX.
RAND_MAX è difinito nell'header stdlib.h
la sequenza di numeri ritornata da rand è legata al seme random, che tu imposti con la funzione
srand(<intero>);
Ogni volta che imposti lo stesso seme random la sequenza di numeri generati sarà la stessa (se non imosti il seme, di default è 1).
di solito, per impostare un seme diverso in diverse esecuzioni dello stesso programma, si usa passare a srand l'ora di sistema.
A differenza di altri linguaggi di programmazione (tipo il pascal) la funzione random C non prende nessun argomento (niente valori massimi nè minimi, nè intervalli) quindi, per ottenere un numero casuale all'interno di un intervallo da te definito devi effettuare dei calcoli sul numero generato.
il modo di fare questo calcolo più usato è questo:
se vuoi generare un numero compreso tra 1 e 10
int a=1+(int)(10.0*rand()/(RAND_MAX+1.0));
altro modo di generare numeri random è la funzione "random", sempre inclusa nell'stdlib, che dovrebbe usare un'altro algoritmo.
A quanto mi è parso di capire questa seconda funzione è più complessa, ma in Linux usa lo stesso algoritmo di rand (), sembra che usi un algoritmo non-standard su piattaforme sun.