#include <gsl/gsl_rng.h>
 #include <complex>
 #include <math.h>
+#include <sys/time.h>
 
 #include "latlib/neigh.h"
 
                                   sizeof(complex<double>)*
                                   _O815->comargs.lsize[0]*_O815->comargs.lsize[0]*_O815->comargs.lsize[0]*_O815->comargs.lsize[1]*(2+4) ) {
 
+  struct timeval tv;
+
   lsize4 = _O815->comargs.lsize[0]*_O815->comargs.lsize[0]*_O815->comargs.lsize[0]*_O815->comargs.lsize[1];
 
   nb = new neigh(4, _O815->comargs.lsize[0], _O815->comargs.lsize[0], _O815->comargs.lsize[0], _O815->comargs.lsize[1]);
   phi = (complex<double>*)confMem;
   U = (complex<double>*)(confMem + sizeof(complex<double>)*lsize4*2);
 
+  gettimeofday(&tv, NULL);
   rangsl = gsl_rng_alloc(gsl_rng_ranlxs0);
-  gsl_rng_set(rangsl, time(NULL));
+  gsl_rng_set(rangsl, 1000000 * tv.tv_sec + tv.tv_usec);
 }
 
 void sim::_makeSweep() {