Ragazzi sapreste spiegarmi bene il funzionamento della funzione srand() per la generazione di numeri casuali?

Vi spiego meglio:

Ho questa funzione
srand((double) microtime()*100000);

di cui ho capito il funzionamento se non per il fatto che mi sfugge il significato e l'utilità di (double) che non sò cosa sia, (raddoppia forse il risultato di microtime()*100000)?), dato che il libro non si degna di farne menzione.

ciò che cmq ho ben compreso è che il tutto è costituito da due parti la prima con l'inizializzazione del generatore di numeri casuali con srand() e poi con la definizione dei limiti di intervallo con rand().

I'm in your hands