non, c'est une suite en fait. tu passes à l'algo le nombre aléatoire que tu viens de générer. par ex en C (si je me souviens bien), rand = rand*n1 + n2.
au début du programme, rand est initialisé toujours de la même manière, avec un int hardcodé : la graine. à chaque nouvelle génération, on utilise la valeur rand précédente pour générer la nouvelle. c'est pourquoi à chaque fois que tu lances le programme, tu auras toujours les mêmes nombres 'aléatoires'. randomize (srand()) iniatilise la graine avec l'heure, histoire de générer des nombres différents.
donc en assembleur ça donne un truc comme ça :
_rand dd 457879761
rand:
mov eax, [_rand]
imul eax, 784731
add eax, 121785
mov [_rand], eax
ret
pour initialiser la graine, tu utilises l'heure. les nombres que je file, c'est n'importe quoi, cherche voir sur le net pour des bons trucs qui donnent une bonne période (ie le nombre de tirages maximal avant de retomber sur les mêmes nombres).
et si tu veux un truc qui torche, tu utilises le mersenne twister : http://www.math.keio.ac.jp/~matumoto/emt.html