Hola, lo que pides resulta un poco dificil pues para cada vez que compiles tu solucion deberia haber un numero o semilla por donde empezar distinto al anterior.
Existen métodos matemáticos que resuelven este problema y lo simulan, como son "Metodos de Congruencia" y "Cuadrados Medios". Estos metodos realizan calculos de numeros aleatorios U(0,1), siempre que desde 1 inicio exista un ' r0 ' o semilla inicial, aqui te pongo programado en C++, un ejemplo usando Metodo Congruencial.
Código:
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
double r0 = 11; //semilla inicial
double resultado;
int n;
cout<<"¿Cuantos números aleatorios necesitas?\n";
cin>>n;
for (int i =0; i < n; i++)
{
resultado = fmod(( 5 + (9*(r0))),12.0);
cout<<resultado/12.0<<endl;
r0 = resultado;
}
}
Para mas informacion sobre estos metodos puedes ver este link que son 2 img que he puesto para que veas en teoria como funcionan, esta muy bueno.
http://www.sendspace.com/file/iadinv
En ultima instancia lo que podrias hacer es tratar de buscar como esta implementado la funcion rand ().
saludos
cronos