Index: trunk/Cosmo/SimLSS/agnjackson.cc
===================================================================
--- trunk/Cosmo/SimLSS/agnjackson.cc	(revision 3614)
+++ trunk/Cosmo/SimLSS/agnjackson.cc	(revision 3615)
@@ -1,2 +1,3 @@
+#include "sopnamsp.h"
 #include "machdefs.h"
 #include <iostream>
Index: trunk/Cosmo/SimLSS/cmvobserv3d.cc
===================================================================
--- trunk/Cosmo/SimLSS/cmvobserv3d.cc	(revision 3614)
+++ trunk/Cosmo/SimLSS/cmvobserv3d.cc	(revision 3615)
@@ -7,7 +7,11 @@
 #include <math.h>
 #include <unistd.h>
+#include "sophyainit.h"
 #include "timing.h"
 #include "ntuple.h"
 #include "matharr.h"
+#include "randfmt.h"
+//#include "randr48.h"
+#include "srandgen.h"
 
 #include "constcosmo.h"
@@ -71,4 +75,5 @@
 int main(int narg,char *arg[])
 {
+ SophyaInit();
  InitTim();
 
@@ -146,4 +151,11 @@
  system("date -u");
 
+ // --- Choix du generateur aleatoire (a faire ICI imperativement avant AutoInitRand)
+ FMTRandGen *RandGen = new FMTRandGen;
+ RandGen->SelectGaussianAlgo(C_Gaussian_RandLibSNorm);
+ RandGen->SelectPoissonAlgo(C_Poisson_Ahrens);
+ RandomGeneratorInterface::SetGlobalRandGenP(RandGen);
+ 
+ // --- Decodage des arguments
  char c;
  while((c = getopt(narg,arg,"ha0PWSV2U:G:F:x:y:z:s:Z:M:A:T:N:Q:R:8:O:o:")) != -1) {
@@ -151,5 +163,5 @@
   switch (c) {
   case 'a' :
-    Auto_Ini_Ranf(5);
+    AutoInitRand(5);
     break;
   case '0' :
@@ -262,4 +274,6 @@
      <<whattowrt[4]<<endl;
  cout<<"rootnameout="<<rootnameout<<endl;
+ ShowRandom();
+ cout<<"   First random is: "<<drand01()<<endl;
 
  string tagobs = rootnameout + ".ppf";
@@ -772,5 +786,8 @@
  }
 
+ //-----------------------------------------------------------------
+ delete RandGen;
  PrtTim(">>>> End Of Job");
+
  return 0;
 }
Index: trunk/Cosmo/SimLSS/cmvschdist.cc
===================================================================
--- trunk/Cosmo/SimLSS/cmvschdist.cc	(revision 3614)
+++ trunk/Cosmo/SimLSS/cmvschdist.cc	(revision 3615)
@@ -17,7 +17,10 @@
 #include <math.h>
 #include <unistd.h>
+#include "sophyainit.h"
 #include "timing.h"
 #include "histos.h"
 #include "ntuple.h"
+//#include "randr48.h"
+#include "randfmt.h"
 #include "srandgen.h"
 #include "perandom.h"
@@ -46,4 +49,5 @@
 int main(int narg,char *arg[])
 {
+SophyaInit();
  double h75 = 0.71 / 0.75;
  double nstar = 0.006*pow(h75,3.);  //  
@@ -62,4 +66,11 @@
  string nametoppf = "";
 
+ // --- Choix du generateur aleatoire (a faire ICI imperativement avant AutoInitRand)
+ FMTRandGen *RandGen = new FMTRandGen;
+ RandGen->SelectGaussianAlgo(C_Gaussian_RandLibSNorm);
+ RandGen->SelectPoissonAlgo(C_Poisson_Ahrens);
+ RandomGeneratorInterface::SetGlobalRandGenP(RandGen);
+
+ // --- decodage des arguments
  char c;
  while((c = getopt(narg,arg,"h0avm:N:n:r:R:W:")) != -1) {
@@ -99,5 +110,5 @@
      break;
    case 'a' :
-     Auto_Ini_Ranf(5);
+     AutoInitRand(5);
      break;
    case 'h' :
@@ -201,4 +212,6 @@
  }
 
+ delete RandGen;
+
  PrtTim("End of Job");
 
Index: trunk/Cosmo/SimLSS/cmvtstagn.cc
===================================================================
--- trunk/Cosmo/SimLSS/cmvtstagn.cc	(revision 3614)
+++ trunk/Cosmo/SimLSS/cmvtstagn.cc	(revision 3615)
@@ -8,4 +8,5 @@
 #include <math.h>
 #include <unistd.h>
+#include "sophyainit.h"
 #include "timing.h"
 #include "ntuple.h"
@@ -13,4 +14,5 @@
 #include "geneutils.h"
 #include "agnjackson.h"
+#include "srandgen.h"
 
 void usage(void);
@@ -27,4 +29,5 @@
 int main(int narg,char *arg[])
 {
+SophyaInit();
  double angsol = 1.;  // sr
  double lxmin=-3.,lxmax=4.; int nbinlx = -100;
@@ -100,5 +103,5 @@
    for(long i=0;i<npix;i++) {
      if(i%l==0) cout<<"...trial: "<<i<<endl;
-     unsigned long n = PoissRandLimit(mu,10.);
+     uint_8 n = Poisson(mu,10.);
      hnobj.Add((double)n);
      sumn += n; sumn2 += n*n;
Index: trunk/Cosmo/SimLSS/cmvtstsch.cc
===================================================================
--- trunk/Cosmo/SimLSS/cmvtstsch.cc	(revision 3614)
+++ trunk/Cosmo/SimLSS/cmvtstsch.cc	(revision 3615)
@@ -7,4 +7,5 @@
 #include <math.h>
 #include <unistd.h>
+#include "sophyainit.h"
 #include "timing.h"
 #include "histos.h"
@@ -35,4 +36,5 @@
 int main(int narg,char *arg[])
 {
+SophyaInit();
  double h75 = 0.71 / 0.75;
  double nstar = 0.006*pow(h75,3.);  //  
@@ -66,5 +68,5 @@
      break;
    case 'a' :
-     Auto_Ini_Ranf(5);
+     AutoInitRand(5);
      break;
    case 'h' :
Index: trunk/Cosmo/SimLSS/genefluct3d.cc
===================================================================
--- trunk/Cosmo/SimLSS/genefluct3d.cc	(revision 3614)
+++ trunk/Cosmo/SimLSS/genefluct3d.cc	(revision 3615)
@@ -1,2 +1,3 @@
+#include "sopnamsp.h"
 #include "machdefs.h"
 #include <iostream>
@@ -693,5 +694,5 @@
        // Explication de la division par 2: voir perandom.cc
        // ou egalement Coles & Lucchin, Cosmology formula 13.7.2 p279
-       T_(l,j,i) = ComplexGaussRan(sqrt(pk/2.));
+       T_(l,j,i) = ComplexGaussian(sqrt(pk/2.));
      }
    }
@@ -1346,5 +1347,5 @@
    double v = data_[ip];
    if(v>0.) {
-     unsigned long dn = PoissRandLimit(v,10.);
+     uint_8 dn = Poisson(v,10.);
      data_[ip] = (double)dn;
      sum += (double)dn;
Index: trunk/Cosmo/SimLSS/geneutils.cc
===================================================================
--- trunk/Cosmo/SimLSS/geneutils.cc	(revision 3614)
+++ trunk/Cosmo/SimLSS/geneutils.cc	(revision 3615)
@@ -1,2 +1,3 @@
+#include "sopnamsp.h"
 #include "machdefs.h"
 #include <iostream>
Index: trunk/FrEROS/AnaLC/nbgene.cc
===================================================================
--- trunk/FrEROS/AnaLC/nbgene.cc	(revision 3614)
+++ trunk/FrEROS/AnaLC/nbgene.cc	(revision 3615)
@@ -1,3 +1,4 @@
 #include "machdefs.h"
+#include "sopnamsp.h"  // using SOPHYA namespace
 #include <stdio.h>
 #include <stdlib.h>
@@ -6,9 +7,9 @@
 #include "fsvcache.h"
 #include "nbtri.h"
-#include "nbrandom.h"
 #include "nbmath.h"
 #include "nbinteg.h"
 #include "strutil.h"
 #include "fsvst.h"
+#include "srandgen.h"
 #include "nbsread.h"
 #include "nbgene.h"
@@ -68,5 +69,5 @@
   seed_16v[1]=(unsigned short) mc.iseed2;
   seed_16v[2]=(unsigned short) mc.iseed3;
-  Ini_Ranf(seed_16v,0);
+  RandGen->SetSeed(seed_16v);
 
   mc.NGene = mc.NPoints_ampli = mc.NPoints_ampli_tf = mc.Net_ampli_tf = 0;
@@ -238,5 +239,5 @@
   printf("Nb d'etoiles amplifiees avec taille finie %d\n"
         ,mc.Net_ampli_tf);
-  Get_Ranf(seed_16v,0);
+  RandGen->SetSeed(seed_16v);
   mc.iseed1 = (int_4)seed_16v[0];
   mc.iseed2 = (int_4)seed_16v[1];
Index: trunk/FrEROS/AnaLC/nbsread.cc
===================================================================
--- trunk/FrEROS/AnaLC/nbsread.cc	(revision 3614)
+++ trunk/FrEROS/AnaLC/nbsread.cc	(revision 3615)
@@ -1,4 +1,5 @@
 /* lecture des fichiers de suivi:     cmv 21/12/93 */
 #include "machdefs.h"
+#include "sopnamsp.h"  // using SOPHYA namespace
 #include <stdio.h>
 #include <stdlib.h>
@@ -7,7 +8,7 @@
 #include <signal.h>
 
+#include "sophyainit.h"
 #include "fsvcache.h"
 #include "nbtri.h"
-#include "nbrandom.h"
 #include "nbmath.h"
 #include "strutil.h"
@@ -106,4 +107,12 @@
 if (narg < 2) usage(0);
 if( !strcmp(arg[1],"-h") != 0 ) usage(1);
+
+/*------------------------------------------*/
+/*-------- Initialisation Aleatoire --------*/
+/*------------------------------------------*/
+ SophyaInit();
+ RandGen = new DR48RandGen;
+ RandomGeneratorInterface::SetGlobalRandGenP(RandGen);
+
 
 /*------------------------------------------*/
@@ -417,6 +426,7 @@
 
 printf("Nombre total d'etoiles lues %d\n",netoiles);
-
-exit(0);
+delete RandGen;
+
+return(0);
 }
 
Index: trunk/FrEROS/AnaLC/nbsread.h
===================================================================
--- trunk/FrEROS/AnaLC/nbsread.h	(revision 3614)
+++ trunk/FrEROS/AnaLC/nbsread.h	(revision 3615)
@@ -25,7 +25,9 @@
 
 #include <stdio.h>
+#include "randr48.h"
 #include "fsvcache.h"
 
 /* valeurs de control */
+EXTERN DR48RandGen * RandGen;
 
 EXTERN double GRAND2_KILL;
Index: trunk/FrEROS/AnaLC/nbsreadu_squel.cc
===================================================================
--- trunk/FrEROS/AnaLC/nbsreadu_squel.cc	(revision 3614)
+++ trunk/FrEROS/AnaLC/nbsreadu_squel.cc	(revision 3615)
@@ -4,4 +4,5 @@
 */
 #include "machdefs.h"
+#include "sopnamsp.h"  // using SOPHYA namespace
 #include <stdlib.h>
 #include <math.h>
Index: trunk/SophyaExt/FitsIOServer/Makefile
===================================================================
--- trunk/SophyaExt/FitsIOServer/Makefile	(revision 3614)
+++ trunk/SophyaExt/FitsIOServer/Makefile	(revision 3615)
@@ -48,4 +48,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -77,4 +78,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -105,4 +107,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h fabtcolread.h \
@@ -151,4 +154,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h fitshandler.h \
@@ -255,4 +259,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h fitsblkrw.h \
@@ -288,4 +293,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h fitsblkrw.h \
@@ -319,4 +325,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -353,4 +360,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -419,4 +427,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h fitsfile.h \
@@ -504,4 +513,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -547,4 +557,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -577,5 +588,6 @@
   $(SOPHYAINCP)dvlist.h \
   $(SOPHYAINCP)ndatablock.h \
-  $(SOPHYAINCP)utilarr.h fitsfile.h \
+  $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h fitsfile.h \
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)dvlist.h fitsinoutfile.h \
@@ -607,4 +619,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
Index: trunk/SophyaExt/FitsIOServer/smakefile
===================================================================
--- trunk/SophyaExt/FitsIOServer/smakefile	(revision 3614)
+++ trunk/SophyaExt/FitsIOServer/smakefile	(revision 3615)
@@ -48,4 +48,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -77,4 +78,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -105,4 +107,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h fabtcolread.h \
@@ -151,4 +154,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h fitshandler.h \
@@ -255,4 +259,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h fitsblkrw.h \
@@ -288,4 +293,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h fitsblkrw.h \
@@ -319,4 +325,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -353,4 +360,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -419,4 +427,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h fitsfile.h \
@@ -504,4 +513,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -547,4 +557,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -577,5 +588,6 @@
   $(SOPHYAINCP)dvlist.h \
   $(SOPHYAINCP)ndatablock.h \
-  $(SOPHYAINCP)utilarr.h fitsfile.h \
+  $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h fitsfile.h \
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)dvlist.h fitsinoutfile.h \
@@ -607,4 +619,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
Index: trunk/SophyaExt/IFFTW/Makefile
===================================================================
--- trunk/SophyaExt/IFFTW/Makefile	(revision 3614)
+++ trunk/SophyaExt/IFFTW/Makefile	(revision 3615)
@@ -33,4 +33,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
Index: trunk/SophyaExt/IFFTW/smakefile
===================================================================
--- trunk/SophyaExt/IFFTW/smakefile	(revision 3614)
+++ trunk/SophyaExt/IFFTW/smakefile	(revision 3615)
@@ -33,4 +33,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
Index: trunk/SophyaExt/LinAlg/Makefile
===================================================================
--- trunk/SophyaExt/LinAlg/Makefile	(revision 3614)
+++ trunk/SophyaExt/LinAlg/Makefile	(revision 3615)
@@ -30,4 +30,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tvector.h \
   $(SOPHYAINCP)tmatrix.h \
Index: trunk/SophyaExt/LinAlg/smakefile
===================================================================
--- trunk/SophyaExt/LinAlg/smakefile	(revision 3614)
+++ trunk/SophyaExt/LinAlg/smakefile	(revision 3615)
@@ -30,4 +30,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tvector.h \
   $(SOPHYAINCP)tmatrix.h \
Index: trunk/SophyaLib/BaseTools/Makefile
===================================================================
--- trunk/SophyaLib/BaseTools/Makefile	(revision 3614)
+++ trunk/SophyaLib/BaseTools/Makefile	(revision 3615)
@@ -4,8 +4,8 @@
  
 clean:
-	 rm -f $(SOPHYAOBJP)datatype.o $(SOPHYAOBJP)dvlist.o $(SOPHYAOBJP)fiondblock.o $(SOPHYAOBJP)mutyv.o $(SOPHYAOBJP)ndatablock.o $(SOPHYAOBJP)pexceptions.o $(SOPHYAOBJP)ppersist.o $(SOPHYAOBJP)ppfbinstream.o $(SOPHYAOBJP)ppftpointerio.o $(SOPHYAOBJP)randfmt.o $(SOPHYAOBJP)randinterf.o $(SOPHYAOBJP)randr48.o $(SOPHYAOBJP)rawstream.o $(SOPHYAOBJP)sophyainit.o $(SOPHYAOBJP)stsrand.o $(SOPHYAOBJP)timestamp.o $(SOPHYAOBJP)dSFMT.o $(SOPHYAOBJP)gnumd5.o $(SOPHYAOBJP)srandgen.o
+	 rm -f $(SOPHYAOBJP)datatype.o $(SOPHYAOBJP)dvlist.o $(SOPHYAOBJP)fiondblock.o $(SOPHYAOBJP)mutyv.o $(SOPHYAOBJP)ndatablock.o $(SOPHYAOBJP)pexceptions.o $(SOPHYAOBJP)ppersist.o $(SOPHYAOBJP)ppfbinstream.o $(SOPHYAOBJP)ppftpointerio.o $(SOPHYAOBJP)randfmt.o $(SOPHYAOBJP)randinterf.o $(SOPHYAOBJP)randr48.o $(SOPHYAOBJP)rawstream.o $(SOPHYAOBJP)sophyainit.o $(SOPHYAOBJP)stsrand.o $(SOPHYAOBJP)timestamp.o $(SOPHYAOBJP)dSFMT.o $(SOPHYAOBJP)gnumd5.o
 	rm -f $(SOPHYALIBP)libBaseTools.a
  
-$(SOPHYALIBP)libBaseTools.a : $(SOPHYAOBJP)datatype.o $(SOPHYAOBJP)dSFMT.o $(SOPHYAOBJP)dvlist.o $(SOPHYAOBJP)fiondblock.o $(SOPHYAOBJP)gnumd5.o $(SOPHYAOBJP)mutyv.o $(SOPHYAOBJP)ndatablock.o $(SOPHYAOBJP)pexceptions.o $(SOPHYAOBJP)ppersist.o $(SOPHYAOBJP)ppfbinstream.o $(SOPHYAOBJP)ppftpointerio.o $(SOPHYAOBJP)randfmt.o $(SOPHYAOBJP)randinterf.o $(SOPHYAOBJP)randr48.o $(SOPHYAOBJP)rawstream.o $(SOPHYAOBJP)sophyainit.o $(SOPHYAOBJP)srandgen.o $(SOPHYAOBJP)stsrand.o $(SOPHYAOBJP)timestamp.o
+$(SOPHYALIBP)libBaseTools.a : $(SOPHYAOBJP)datatype.o $(SOPHYAOBJP)dSFMT.o $(SOPHYAOBJP)dvlist.o $(SOPHYAOBJP)fiondblock.o $(SOPHYAOBJP)gnumd5.o $(SOPHYAOBJP)mutyv.o $(SOPHYAOBJP)ndatablock.o $(SOPHYAOBJP)pexceptions.o $(SOPHYAOBJP)ppersist.o $(SOPHYAOBJP)ppfbinstream.o $(SOPHYAOBJP)ppftpointerio.o $(SOPHYAOBJP)randfmt.o $(SOPHYAOBJP)randinterf.o $(SOPHYAOBJP)randr48.o $(SOPHYAOBJP)rawstream.o $(SOPHYAOBJP)sophyainit.o $(SOPHYAOBJP)stsrand.o $(SOPHYAOBJP)timestamp.o
 	$(AR) $(ARFLAGS) $@ $? 
 	touch $(SOPHYAINCP)/SophyaConfInfo/libsophya.objlist
@@ -84,7 +84,7 @@
   pexceptions.h ppersist.h gnumd5.h ppfbinstream.h rawstream.h \
   ppfnametag.h fiondblock.h ndatablock.h anydataobj.h dvlist.h objfio.h \
-  mutyv.h timestamp.h stsrand.h randr48.h randinterf.h randfmt.h \
-  dsfmtflags.h dSFMT.h fiosegdb.h segdatablock.h thsafeop.h \
-  ppftpointerio.h ppfwrapstlv.h sversion.h
+  mutyv.h timestamp.h randr48.h randinterf.h randfmt.h dsfmtflags.h \
+  dSFMT.h fiosegdb.h segdatablock.h thsafeop.h ppftpointerio.h \
+  ppfwrapstlv.h sversion.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  sophyainit.cc
  
@@ -107,6 +107,2 @@
 	$(CCOMPILE) -o $@  gnumd5.c
  
-$(SOPHYAOBJP)srandgen.o: srandgen.c $(SOPHYAINCP)machdefs.h \
-  srandgen.h smathconst.h
-	$(CCOMPILE) -o $@  srandgen.c
- 
Index: trunk/SophyaLib/BaseTools/objlist.list
===================================================================
--- trunk/SophyaLib/BaseTools/objlist.list	(revision 3614)
+++ trunk/SophyaLib/BaseTools/objlist.list	(revision 3615)
@@ -15,5 +15,4 @@
 rawstream.o
 sophyainit.o
-srandgen.o
 stsrand.o
 timestamp.o
Index: trunk/SophyaLib/BaseTools/randfmt.cc
===================================================================
--- trunk/SophyaLib/BaseTools/randfmt.cc	(revision 3614)
+++ trunk/SophyaLib/BaseTools/randfmt.cc	(revision 3615)
@@ -19,4 +19,9 @@
 FMTRandGen::~FMTRandGen()
 {
+}
+
+void FMTRandGen::ShowRandom()
+{
+  cout<<"RandomGenerator is FMTRandGen"<<endl;
 }
 
Index: trunk/SophyaLib/BaseTools/randfmt.h
===================================================================
--- trunk/SophyaLib/BaseTools/randfmt.h	(revision 3614)
+++ trunk/SophyaLib/BaseTools/randfmt.h	(revision 3615)
@@ -30,4 +30,5 @@
   virtual void SetSeed(vector<uint_4> seed);
   virtual void AutoInit(int lp=0);
+  virtual void ShowRandom();
 
   friend class ObjFileIO<FMTRandGen> ;
Index: trunk/SophyaLib/BaseTools/randinterf.cc
===================================================================
--- trunk/SophyaLib/BaseTools/randinterf.cc	(revision 3614)
+++ trunk/SophyaLib/BaseTools/randinterf.cc	(revision 3615)
@@ -28,5 +28,5 @@
 
    \sa frand01 drand01 frandpm1 drandpm1 
-   \sa GauRnd PoissRand
+   \sa Gaussian Poisson
 
 */
@@ -62,4 +62,8 @@
 }
 
+void RandomGeneratorInterface::ShowRandom()
+{
+  cout<<"RandomGenerator is RandomGeneratorInterface i.e. UNDEFINED"<<endl;
+}
 
 /////////////////////////////////////////////////////////////////////////
@@ -172,4 +176,10 @@
 }
 
+void RandomGeneratorInterface::AutoInit(int lp)
+{
+  printf("RandomGeneratorInterface::AutoInit(): undefined code !!!\n");
+  throw MathExc("RandomGeneratorInterface::AutoInit(): undefined code !!!");
+}
+
 /////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////
@@ -773,4 +783,96 @@
 }
 
+/////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////
+
+int RandomGeneratorInterface::Gaussian2DRho(double &x,double &y,double mx,double my,double sx,double sy,double ro)
+/*
+++
+|	Tirage de 2 nombres aleatoires x et y distribues sur une gaussienne 2D
+|	de centre (mx,my), de coefficient de correlation rho (ro) et telle que
+|	les sigmas finals des variables x et y soient sx,sy (ce sont
+|	les valeurs des distributions marginales des variables aleatoires x et y
+|	c'est a dire les sigmas des projections x et y de l'histogramme 2D
+|	de la gaussienne). Retourne 0 si ok.
+|
+| - La densite de probabilite (normalisee a 1) sur laquelle on tire est:
+|   N*exp[-0.5*{[(dx/sx)^2-2*ro/(sx*sy)*dx*dy+(dy/sy)^2]/(1-ro^2)}]
+|     avec dx = x-mx, dy = y-my et N = 1/[2Pi*sx*sy*sqrt(1-ro^2)]
+| - Dans ce cas la distribution marginale est (ex en X):
+|   1/(sqrt(2Pi)*sx) * exp[-0.5*{dx^2/sx^2}]
+| - La matrice des covariances C des variables x,y est:
+|   |   sx^2      ro*sx*sy |
+|   |                      |  et det(C) = (1-ro^2)*sx^2*sy^2
+|   | ro*sx*sy      sy^2   |
+| - La matrice inverse C^(-1) est:
+|   |   1/sx^2      -ro/(sx*sy) |
+|   |                           | * 1/(1-ro^2)
+|   | -ro/(sx*sy)      1/sy^2   |
+|
+| - Remarque:
+| le sigma que l'on obtient quand on fait une coupe de la gaussienne 2D
+| en y=0 (ou x=0) est: SX0(y=0) = sx*sqrt(1-ro^2) different de sx
+|                      SY0(x=0) = sy*sqrt(1-ro^2) different de sy
+| La distribution qui correspond a des sigmas SX0,SY0
+| pour les coupes en y=0,x=0 de la gaussienne 2D serait:
+|   N*exp[-0.5*{ (dx/SX0)^2-2*ro/(SX0*SY0)*dx*dy+(dy/SY0)^2 }]
+| avec N = sqrt(1-ro^2)/(2Pi*SX0*SY0) et les variances
+| des variables x,y sont toujours
+|  sx=SX0/sqrt(1-ro^2), sy=SY0/sqrt(1-ro^2)
+--
+*/
+{
+double a,b,sa;
+
+if( ro <= -1. || ro >= 1. ) return 1;
+
+while( (b=Flat01()) == 0. );
+b = sqrt(-2.*log(b));
+a = 2.*M_PI * Flat01();
+sa = sin(a);
+
+x = mx + sx*b*(sqrt(1.-ro*ro)*cos(a)+ro*sa);
+y = my + sy*b*sa;
+
+return 0;
+}
+
+void RandomGeneratorInterface::Gaussian2DAng(double &x,double &y,double mx,double my,double sa,double sb,double teta)
+/*
+++
+|	Tirage de 2 nombres aleatoires x et y distribues sur une gaussienne 2D
+|	de centre (x=mx,y=my), de sigmas grand axe et petit axe (sa,sb)
+|	et dont le grand axe fait un angle teta (radian) avec l'axe des x.
+|
+| - La densite de probabilite (normalisee a 1) sur laquelle on tire est:
+| N*exp[-0.5*{ (A/sa)**2+(C/sc)**2 }],  N=1/(2Pi*sa*sc)
+| ou A et B sont les coordonnees selon le grand axe et le petit axe
+| et teta = angle(x,A), le resultat subit ensuite une rotation d'angle teta.
+| - La matrice des covariances C des variables A,B est:
+|   | sa^2   0   |
+|   |            |  et det(C) = (1-ro^2)*sa^2*sb^2
+|   |  0    sb^2 |
+| - La distribution x,y resultante est:
+| N*exp[-0.5*{[(dx/sx)^2-2*ro/(sx*sy)*dx*dy+(dy/sy)^2]/(1-ro^2)}]
+| ou N est donne dans NormCo et sx,sy,ro sont calcules a partir
+| de sa,sc,teta (voir fonctions paramga ou gaparam). La matrice des
+| covariances des variables x,y est donnee dans la fonction NormCo.
+--
+*/
+{
+double c,s,X,Y;
+
+while( (s = Flat01()) == 0. );
+s = sqrt(-2.*log(s));
+c = 2.*M_PI * Flat01();
+
+X = sa*s*cos(c);
+Y = sb*s*sin(c);
+
+c = cos(teta); s = sin(teta);
+x = mx + c*X - s*Y;
+y = my + s*X + c*Y;
+}
 
 }  /* namespace SOPHYA */
@@ -780,5 +882,5 @@
 /////////////////////////////////////////////////////////////////
 /*
-**** Remarques sur complex< r_8 > ComplexGaussRan(double sig) ****
+**** Remarques sur complex< r_8 > ComplexGaussian(double sig) ****
 
 --- variables gaussiennes x,y independantes
Index: trunk/SophyaLib/BaseTools/randinterf.h
===================================================================
--- trunk/SophyaLib/BaseTools/randinterf.h	(revision 3614)
+++ trunk/SophyaLib/BaseTools/randinterf.h	(revision 3615)
@@ -110,17 +110,28 @@
 
   // --- Le tirage gaussien complexe (cf texte a la fin du .cc)
-  inline complex< r_8 > ComplexGaussRan(void)
+  inline complex< r_8 > ComplexGaussian(void)
          {return complex< r_8 >(Gaussian(),Gaussian());}
-  inline complex< r_8 > ComplexGaussRan(double sig)
+  inline complex< r_8 > ComplexGaussian(double sig)
          {return complex< r_8 >(sig*Gaussian(),sig*Gaussian());}
   /*! \brief Returns the module of a random complex number generated by ComplexGaussRan */
-  inline double ModComplexGaussRan(double sig=1.)
+  inline double ModComplexGaussian(double sig=1.)
          {double r=-log(1.-Next()); return sig*sqrt(2.*r);}
 
-//! Return the pointer to the default global RandomGenerator object 
+  // --- Le tirage sur une distribution gaussienne a 2D
+  /*! \brief Return 2 random numbers following a gaussian 2D distribution */ 
+  virtual int  Gaussian2DRho(double &x,double &y,double mx,double my,double sx,double sy,double ro);
+  virtual void Gaussian2DAng(double &x,double &y,double mx,double my,double sa,double sb,double teta);
+
+  //! Return the pointer to the default global RandomGenerator object 
   static inline RandomGeneratorInterface* GetGlobalRandGenP()
     { return gl_rndgen_p; }
 
-// Permet de definir l'instance global du generateur aleatoire
+  //! Initialisation automatique
+  virtual void AutoInit(int lp=0);
+
+  //! Print
+  virtual void ShowRandom();
+
+  // Permet de definir l'instance global du generateur aleatoire
   static void SetGlobalRandGenP(RandomGeneratorInterface* rgp);
 
Index: trunk/SophyaLib/BaseTools/randr48.cc
===================================================================
--- trunk/SophyaLib/BaseTools/randr48.cc	(revision 3614)
+++ trunk/SophyaLib/BaseTools/randr48.cc	(revision 3615)
@@ -16,4 +16,9 @@
 DR48RandGen::~DR48RandGen()
 {
+}
+
+void DR48RandGen::ShowRandom()
+{
+  cout<<"RandomGenerator is DR48RandGen"<<endl;
 }
 
@@ -112,4 +117,9 @@
 }
 
+
+void ThSDR48RandGen::ShowRandom()
+{
+  cout<<"RandomGenerator is ThSDR48RandGen"<<endl;
+}
 
 void ThSDR48RandGen::SetSeed(long int seed)
Index: trunk/SophyaLib/BaseTools/randr48.h
===================================================================
--- trunk/SophyaLib/BaseTools/randr48.h	(revision 3614)
+++ trunk/SophyaLib/BaseTools/randr48.h	(revision 3615)
@@ -14,4 +14,22 @@
 #include "randinterf.h"
 
+
+/* ------- SPECIFIQUE Mac Darwin OSX  <= 10.2 (gcc < 3.x) -------- */
+#if defined(Darwin) &&  defined(__GNUC__) && (__GNUC__ < 3)
+#include "osx_values.h"
+/* Declaration de drand48 et srand48 etc , mis ds SysSpec, Reza 11/02/2003 */
+#ifdef __cplusplus
+extern "C" {
+#endif
+unsigned short int * seed48(unsigned short int seed16v[3]);
+void srand48(long seedval);
+#ifdef __cplusplus
+}
+#endif
+#define drand48() ((double)(random())/LONG_MAX)
+#endif
+/* ------- FIN SPECIFIQUE Mac OSX / Darwin V <= 10.2 --------- */
+
+
 namespace SOPHYA {
 
@@ -27,4 +45,5 @@
   virtual void GetSeed(uint_2 seed[3]);
   virtual void AutoInit(int lp=0);
+  virtual void ShowRandom();
 
   friend class ObjFileIO<DR48RandGen> ;
@@ -54,4 +73,5 @@
   virtual void GetSeed(uint_2 seed[3]);
   virtual void AutoInit(int lp=0);
+  virtual void ShowRandom();
 
   friend class ObjFileIO<ThSDR48RandGen> ;
Index: trunk/SophyaLib/BaseTools/smakefile
===================================================================
--- trunk/SophyaLib/BaseTools/smakefile	(revision 3614)
+++ trunk/SophyaLib/BaseTools/smakefile	(revision 3615)
@@ -4,8 +4,8 @@
  
 clean:
-	 rm -f $(SOPHYAOBJP)datatype.o $(SOPHYAOBJP)dvlist.o $(SOPHYAOBJP)fiondblock.o $(SOPHYAOBJP)mutyv.o $(SOPHYAOBJP)ndatablock.o $(SOPHYAOBJP)pexceptions.o $(SOPHYAOBJP)ppersist.o $(SOPHYAOBJP)ppfbinstream.o $(SOPHYAOBJP)ppftpointerio.o $(SOPHYAOBJP)randfmt.o $(SOPHYAOBJP)randinterf.o $(SOPHYAOBJP)randr48.o $(SOPHYAOBJP)rawstream.o $(SOPHYAOBJP)sophyainit.o $(SOPHYAOBJP)stsrand.o $(SOPHYAOBJP)timestamp.o $(SOPHYAOBJP)dSFMT.o $(SOPHYAOBJP)gnumd5.o $(SOPHYAOBJP)srandgen.o
+	 rm -f $(SOPHYAOBJP)datatype.o $(SOPHYAOBJP)dvlist.o $(SOPHYAOBJP)fiondblock.o $(SOPHYAOBJP)mutyv.o $(SOPHYAOBJP)ndatablock.o $(SOPHYAOBJP)pexceptions.o $(SOPHYAOBJP)ppersist.o $(SOPHYAOBJP)ppfbinstream.o $(SOPHYAOBJP)ppftpointerio.o $(SOPHYAOBJP)randfmt.o $(SOPHYAOBJP)randinterf.o $(SOPHYAOBJP)randr48.o $(SOPHYAOBJP)rawstream.o $(SOPHYAOBJP)sophyainit.o $(SOPHYAOBJP)stsrand.o $(SOPHYAOBJP)timestamp.o $(SOPHYAOBJP)dSFMT.o $(SOPHYAOBJP)gnumd5.o
 	rm -f $(SOPHYALIBP)libBaseTools.a
  
-$(SOPHYALIBP)libBaseTools.a : $(SOPHYAOBJP)datatype.o $(SOPHYAOBJP)dSFMT.o $(SOPHYAOBJP)dvlist.o $(SOPHYAOBJP)fiondblock.o $(SOPHYAOBJP)gnumd5.o $(SOPHYAOBJP)mutyv.o $(SOPHYAOBJP)ndatablock.o $(SOPHYAOBJP)pexceptions.o $(SOPHYAOBJP)ppersist.o $(SOPHYAOBJP)ppfbinstream.o $(SOPHYAOBJP)ppftpointerio.o $(SOPHYAOBJP)randfmt.o $(SOPHYAOBJP)randinterf.o $(SOPHYAOBJP)randr48.o $(SOPHYAOBJP)rawstream.o $(SOPHYAOBJP)sophyainit.o $(SOPHYAOBJP)srandgen.o $(SOPHYAOBJP)stsrand.o $(SOPHYAOBJP)timestamp.o
+$(SOPHYALIBP)libBaseTools.a : $(SOPHYAOBJP)datatype.o $(SOPHYAOBJP)dSFMT.o $(SOPHYAOBJP)dvlist.o $(SOPHYAOBJP)fiondblock.o $(SOPHYAOBJP)gnumd5.o $(SOPHYAOBJP)mutyv.o $(SOPHYAOBJP)ndatablock.o $(SOPHYAOBJP)pexceptions.o $(SOPHYAOBJP)ppersist.o $(SOPHYAOBJP)ppfbinstream.o $(SOPHYAOBJP)ppftpointerio.o $(SOPHYAOBJP)randfmt.o $(SOPHYAOBJP)randinterf.o $(SOPHYAOBJP)randr48.o $(SOPHYAOBJP)rawstream.o $(SOPHYAOBJP)sophyainit.o $(SOPHYAOBJP)stsrand.o $(SOPHYAOBJP)timestamp.o
 	$(AR) $(ARFLAGS) $@ $? 
 	touch $(SOPHYAINCP)/SophyaConfInfo/libsophya.objlist
@@ -84,7 +84,7 @@
   pexceptions.h ppersist.h gnumd5.h ppfbinstream.h rawstream.h \
   ppfnametag.h fiondblock.h ndatablock.h anydataobj.h dvlist.h objfio.h \
-  mutyv.h timestamp.h stsrand.h randr48.h randinterf.h randfmt.h \
-  dsfmtflags.h dSFMT.h fiosegdb.h segdatablock.h thsafeop.h \
-  ppftpointerio.h ppfwrapstlv.h sversion.h
+  mutyv.h timestamp.h randr48.h randinterf.h randfmt.h dsfmtflags.h \
+  dSFMT.h fiosegdb.h segdatablock.h thsafeop.h ppftpointerio.h \
+  ppfwrapstlv.h sversion.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  sophyainit.cc
  
@@ -107,6 +107,2 @@
 	$(CCOMPILE) -o $@  gnumd5.c
  
-$(SOPHYAOBJP)srandgen.o: srandgen.c $(SOPHYAINCP)machdefs.h \
-  srandgen.h smathconst.h
-	$(CCOMPILE) -o $@  srandgen.c
- 
Index: trunk/SophyaLib/BaseTools/srandgen.c
===================================================================
--- trunk/SophyaLib/BaseTools/srandgen.c	(revision 3614)
+++ 	(revision )
@@ -1,658 +1,0 @@
-#include "machdefs.h"
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#include <sys/time.h>
-#include "srandgen.h"
-#include "smathconst.h"
-
-static double GAU_RANGE=6.;
-
-/* 
-++ 
-  Module 	Tirages aleatoires (C)
-  Lib	LibsUtil
-  include	srandgen.h
---
-*/
-
-/*
-++
-  frand01()
-	tirage aleatoire entre 0 et 1, retourne float  
-  drand01()
-	tirage aleatoire entre 0 et 1, retourne double  
-  rand01()
-	 c'est le defaut: drand01()
-  frandpm1()
-	tirage aleatoire entre -1 et 1, retourne float
-  drandpm1()
-	tirage aleatoire entre -1 et 1, retourne double
-  ranfpm1()
-	c'est le defaut: drandpm1()
---
-*/
-
-/*! \ingroup  BaseTools
-    \fn frand01
-    Returns a random number (float) with flat distribution between 0 ... 1
-*/
-/*! \ingroup  BaseTools
-    \fn drand01
-    Returns a random number (double) with flat distribution between 0 ... 1
-*/
-/*! \ingroup  BaseTools
-    \fn frandpm1() 
-    Returns a random number (float) with flat distribution between -1 ... 1
-*/
-/*! \ingroup  BaseTools
-    \fn drandpm1() 
-    Returns a random number (double) with flat distribution between -1 ... 1  
-*/
-
-/*=========================================================================*/
-/*
-++
-  void Ini_Ranf_Quick(long seed_val, int lp)
-	Initialisation rapide du generateur (drand48) par un entier
-	de 32 bits de type long (cf srand48).
---
-*/
-
-/*! \ingroup  BaseTools
-    Fast initialisation of the random number generator \c (drand48) 
-    using a \c long type value (cf \c srand48 )
-*/
-void Ini_Ranf_Quick(long seed_val, int lp)
-{
-if(lp) printf("Ini_Ranf_Quick: %d\n",(int) seed_val);
-srand48(seed_val);
-return;
-}
-
-/*=========================================================================*/
-/*
-++
-  void Ini_Ranf(unsigned short seed_16v[3], int lp)
-	Initialisation complete du generateur (drand48) par
-	48 bits (cf seed48).
---
-*/
-/*! \ingroup  BaseTools
-    complete initialisation of the random number generator \c (drand48) 
-    using a \c using 48 bits (cf \c seed48 )
-*/
-void Ini_Ranf(unsigned short seed_16v[3], int lp)
-{
-if(lp) printf("Ini_Ranf: %d %d %d\n"
-             ,seed_16v[0],seed_16v[1],seed_16v[2]);
-seed48(seed_16v);
-return;
-}
-
-/*=========================================================================*/
-/*
-++
-  void Get_Ranf(unsigned short seed_16v[3], int lp)
-	Recuperation de l'etat du generateur (drand48) sur
-	de 48 bits (cf seed48).
---
-*/
-/*! \ingroup  BaseTools
-    Returns the status (48 bits) of the random number generator \c (drand48) 
-    (cf \c seed48 )
-*/
-void Get_Ranf(unsigned short seed_16v[3], int lp)
-{
-unsigned short seed[3] = {0,0,0};
-unsigned short *p;
-p = seed48(seed);
-memcpy(seed_16v,p,3*sizeof(unsigned short));
-if(lp) printf("Get_Ranf: %d %d %d\n"
-             ,seed_16v[0],seed_16v[1],seed_16v[2]);
-/* on re-initialise a ce qui etait avant */
-seed48(seed_16v);
-return;
-}
-
-/*=========================================================================*/
-/*
-++
-  void Auto_Ini_Ranf(int lp)
-	Initialisation automatique (pseudo) aleatoire du generateur.
-	L'initialiseur est donne par le nombre de millisecondes
-	ecoulees depuis le dernier jour multiple de 23 du nombre de jours
-	depuis le 0 heure le 1er Janvier 1970 UTC (cf gettimeofday).
-	Pour retomber sur la meme initialisation
-	il faut generer deux aleatoires a moins de 1/1000 seconde
-	ou generer le deuxieme aleatoire 23 jours apres le premier
-	a la meme heure (a 1/1000 de seconde pres). La fonction
-	d'initialisation utilisee est Ini_Ranf_Quick(long).
---
-*/
-/*! \ingroup  BaseTools
-    Automatic initialisation using the present time
-*/
-void Auto_Ini_Ranf(int lp)
-{
-struct timeval now;
-long nj,nj23,seed=0;
-double buf;
-
-gettimeofday (&now,0);
-
-/* dans 32 bits signes on met environ 23 jours a 1/1000 de seconde pres! */
-/* Nombre de jours depuis l'origine */
-nj = (long) now.tv_sec / 86400;
-/* Nombre de jours depuis le dernier jour multiple de 23 jours */
-nj23 = nj % 23;
-/* nombre de secondes depuis le dernier jour multiple de 23 jours */
-buf = (double) (nj23*86400 + (now.tv_sec-nj*86400));
-/* nombre de milliemes de secondes depuis ... */
-buf = buf*1000. +  now.tv_usec/1000.;
-seed = (long) buf;
-
-if(lp) {
-  printf("Auto_Ini_Ranf: date %ld s %ld 10^-6 sec seed=%ld:\n"
-        ,(long)now.tv_sec,(long)now.tv_usec,seed);
-  if(lp>1) printf("... njours=%ld nj23=%ld buf=%.20g\n",nj,nj23,buf);
-}
-Ini_Ranf_Quick(seed,lp);
-return;
-}
-
-/*=========================================================================*/
-/*
-++
-  void SetGauRange(double range)
-	Generation de distribution gaussienne:
-	Changement de l'initialisation de l'excursion du tirage
-	en nombre de sigmas (obsolete).
---
-*/
-void SetGauRange(double range)
-{
-GAU_RANGE = range;
-}
-
-/*=========================================================================*/
-/*
-++
-  float NorRand(void)
-	Generation aleatoire gaussienne normee centree
---
-*/
-/*! \ingroup  BaseTools
-    Normal (Gaussian) random number generator (Mean=0., Sigma=1.)
-*/
-double NorRand(void)
-{
- double A;
- while( (A=drand01()) == 0.);
- return sqrt(-2.*log(A))*cos(DeuxPi*drand01());
-}
-
-/*=========================================================================*/
-/*
-++
-  float NorRand1(void)
-	Generation aleatoire gaussienne normee centree
-	la distribution est limitee entre +/- GAU_RANGE (obsolete).
---
-*/
-double NorRand1(void)
-{
-double b, x, y, gauss;
-
-b = 1./sqrt(2.*M_PI);
-LAB10:
-x = GAU_RANGE*drandpm1();
-y = drand01()*b;
-gauss = b*exp(-x*x/2.);
-if ( gauss-y < 0. ) goto LAB10 ;
-return  x;
-}
-
-/*=========================================================================*/
-/*
-++
-  double GauRnd(double am, double s)
-	Generation aleatoire gaussienne de centre "am" et de sigma "s".
---
-*/
-/*! \ingroup  BaseTools
-    Normal (Gaussian) random number generator with the specified mean
-    (\c am ) and sigma (\c s )
-*/
-double GauRnd(double am, double s)
-{
-double A;
-while( (A=drand01()) == 0. );
-return am + s * sqrt(-2.*log(A))*cos(DeuxPi*drand01());
-}
-
-/*! \ingroup  BaseTools
-  \brief Poisson random number generator.
-  
-  Return an integer value (>=0) corresponding a Poisson distribution with mean \b mu.
-  \warning NOT the most efficient way of generating a large series of numbers
-  with the SAME mean
-*/
-int PoissRand(double mu)
-{
-  double pp,ppi,x;
-  int n;
-  ppi = pp = exp(-mu);
-  x = drand01();
-  n = 0;
-  while (x > ppi) {
-    n++;
-    pp = mu*pp/(double)n;
-    ppi += pp;
-  }
-  return n;
-}
-
-/*! \ingroup  BaseTools
-  \brief Poisson random number generator with approximation for large mean.
-  
-  Return an integer value (>=0) corresponding a Poisson distribution with mean \b mu.
-  If \b mu is greater or equal than \b mumax,
-  the large number gaussian approximation is applied.
-  \b mumax=10 is a good value.
-*/
-unsigned long PoissRandLimit(double mu,double mumax)
-// p(n) = (mu^n / n!) exp(-mu)  for n = 0, 1, 2, ...
-{
-  double pp,ppi,x;
-  unsigned long n;
-
-  if(mu>=mumax) {
-    pp = sqrt(mu);
-    while( (x=pp*NorRand()) < -mu );
-    return (unsigned long)(mu+x+0.5);
-  }
-
-  ppi = pp = exp(-mu);
-  x = drand01();
-  n = 0;
-  while (x > ppi) {
-    n++;
-    pp = mu*pp/(double)n;
-    ppi += pp;
-  }
-  return n;
-}
-
-/*=========================================================================*/
-/*
-++
-  double GauRnd1(double am, double s)
-	Generation aleatoire gaussienne de centre "am" et de
-	sigma "s" la distribution est limitee entre am +/- GAU_RANGE (obsolete).
---
-*/
-/*! \ingroup  BaseTools
- \brief OBSOLETE (gaussian random number generator)
-*/
-double GauRnd1(double am, double s)
-{
-double s2, b, x, y, gauss;
-
-s2 = 2.*s*s;
-b = 1./sqrt(2.*M_PI*s);
-LAB10:
-x = am + GAU_RANGE*s*drandpm1();
-y = drand01()*b;
-gauss = b*exp(-(x-am)*(x-am)/s2);
-if ( gauss-y < 0. ) goto LAB10 ;
-return(x);
-}
-
-/*==========================================================================*/
-/*
-++
-  void NormGau(double *x,double *y,double mx,double my,double sa,double sb,double teta);
-	Tirage de 2 nombres aleatoires x et y distribues sur une gaussienne 2D
-	de centre (x=mx,y=my), de sigmas grand axe et petit axe (sa,sb)
-	et dont le grand axe fait un angle teta (radian) avec l'axe des x.
---
-*/
-/*
-++
-| - La densite de probabilite (normalisee a 1) sur laquelle on tire est:
-| N*exp[-0.5*{ (A/sa)**2+(C/sc)**2 }],  N=1/(2Pi*sa*sc)
-| ou A et B sont les coordonnees selon le grand axe et le petit axe
-| et teta = angle(x,A), le resultat subit ensuite une rotation d'angle teta.
-| - La matrice des covariances C des variables A,B est:
-|   | sa^2   0   |
-|   |            |  et det(C) = (1-ro^2)*sa^2*sb^2
-|   |  0    sb^2 |
-| - La distribution x,y resultante est:
-| N*exp[-0.5*{[(dx/sx)^2-2*ro/(sx*sy)*dx*dy+(dy/sy)^2]/(1-ro^2)}]
-| ou N est donne dans NormCo et sx,sy,ro sont calcules a partir
-| de sa,sc,teta (voir fonctions paramga ou gaparam). La matrice des
-| covariances des variables x,y est donnee dans la fonction NormCo.
---
-*/
-void NormGau(double *x,double *y
-            ,double mx,double my,double sa,double sb,double teta)
-{
-double c,s,X,Y;
-
-while( (s = drand01()) == 0. );
-s = sqrt(-2.*log(s));
-c = DeuxPi * drand01();
-
-X = sa*s*cos(c);
-Y = sb*s*sin(c);
-
-c = cos(teta); s = sin(teta);
-*x = mx + c*X - s*Y;
-*y = my + s*X + c*Y;
-}
-
-/*==========================================================================*/
-/*
-++
-  int NormCo(double *x,double *y,double mx,double my,double sx,double sy,double ro)
-	Tirage de 2 nombres aleatoires x et y distribues sur une gaussienne 2D
-	de centre (mx,my), de coefficient de correlation rho (ro) et telle que
-	les sigmas finals des variables x et y soient sx,sy (ce sont
-	les valeurs des distributions marginales des variables aleatoires x et y
-	c'est a dire les sigmas des projections x et y de l'histogramme 2D
-	de la gaussienne). Retourne 0 si ok.
---
-*/
-/*
-++
-| - La densite de probabilite (normalisee a 1) sur laquelle on tire est:
-|   N*exp[-0.5*{[(dx/sx)^2-2*ro/(sx*sy)*dx*dy+(dy/sy)^2]/(1-ro^2)}]
-|     avec dx = x-mx, dy = y-my et N = 1/[2Pi*sx*sy*sqrt(1-ro^2)]
-| - Dans ce cas la distribution marginale est (ex en X):
-|   1/(sqrt(2Pi)*sx) * exp[-0.5*{dx^2/sx^2}]
-| - La matrice des covariances C des variables x,y est:
-|   |   sx^2      ro*sx*sy |
-|   |                      |  et det(C) = (1-ro^2)*sx^2*sy^2
-|   | ro*sx*sy      sy^2   |
-| - La matrice inverse C^(-1) est:
-|   |   1/sx^2      -ro/(sx*sy) |
-|   |                           | * 1/(1-ro^2)
-|   | -ro/(sx*sy)      1/sy^2   |
---
-*/
-/*
-++
-| - Remarque:
-| le sigma que l'on obtient quand on fait une coupe de la gaussienne 2D
-| en y=0 (ou x=0) est: SX0(y=0) = sx*sqrt(1-ro^2) different de sx
-|                      SY0(x=0) = sy*sqrt(1-ro^2) different de sy
-| La distribution qui correspond a des sigmas SX0,SY0
-| pour les coupes en y=0,x=0 de la gaussienne 2D serait:
-|   N*exp[-0.5*{ (dx/SX0)^2-2*ro/(SX0*SY0)*dx*dy+(dy/SY0)^2 }]
-| avec N = sqrt(1-ro^2)/(2Pi*SX0*SY0) et les variances
-| des variables x,y sont toujours
-|  sx=SX0/sqrt(1-ro^2), sy=SY0/sqrt(1-ro^2)
---
-*/
-int NormCo(double *x,double *y
-          ,double mx,double my,double sx,double sy,double ro)
-{
-double a,b,sa;
-if( ro <= -1. || ro >= 1. ) return(1);
-while( (b=drand01()) == 0. );
-b = sqrt(-2.*log(b));
-a = DeuxPi * drand01();
-sa = sin(a);
-
-*x = mx + sx*b*(sqrt(1.-ro*ro)*cos(a)+ro*sa);
-*y = my + sy*b*sa;
-
-return(0);
-}
-
-
-
-/*==========================================================================*/
-/*
-++
-  Titre	Exemple d'utilisation des aleatoires avec initialisation.
---
-*/
-/*
-++
-|   #include "srandgen.h"
-|   
-|   void main() {
-|   long i,ini=123456789;
-|   unsigned short seed[3];
-|   
-|   printf(" 1./ ==> test nitialisation par un long\n");
-|   Ini_Ranf_Quick(ini,1);
-|   for(i=0;i<10;i++) printf("%d  -> %f\n",i,ranf01());
---
-*/
-/*
-++
-|   
-|   printf("\n 2./ ==> test initialisation par tableau de 3 unsigned short\n");
-|   Ini_Ranf_Quick(ini,1);
-|   for(i=0;i<5;i++) printf("%d  -> %f\n",i,ranf01());
-|   Get_Ranf(seed,1);
-|   for(i=5;i<10;i++) printf("%d  -> %f\n",i,ranf01());
-|   Ini_Ranf(seed,1);
-|   for(i=5;i<10;i++) printf("%d  -> %f\n",i,ranf01());
-|   Get_Ranf(seed,1);
---
-*/
-/*
-++
-|   
-|   printf("\n 3./ ==> test initialisation automatique\n");
-|   Auto_Ini_Ranf(2);
-|   for(i=0;i<5;i++) printf("%d  -> %f\n",i,ranf01());
-|   i=0; while(i<10000000) i++;
-|   Auto_Ini_Ranf(2);
-|   for(i=0;i<5;i++) printf("%d  -> %f\n",i,ranf01());
-|   i=0; while(i<10000000) i++;
-|   Auto_Ini_Ranf(2);
-|   for(i=0;i<5;i++) printf("%d  -> %f\n",i,ranf01());
-|   }
---
-*/
-/*
-++
-|    1./ ==> test initialisation par un long
-|   Ini_Ranf_Quick: 123456789
-|   0  -> 0.052468
-|   1  -> 0.025444
-|   2  -> 0.099272
-|   3  -> 0.436130
-|   4  -> 0.327740
-|   5  -> 0.821202
-|   6  -> 0.560493
-|   7  -> 0.018157
-|   8  -> 0.872758
-|   9  -> 0.652496
---
-*/
-/*
-++
-|   
-|    2./ ==> test initialisation par tableau de 3 unsigned short
-|   Ini_Ranf_Quick: 123456789
-|   0  -> 0.052468
-|   1  -> 0.025444
-|   2  -> 0.099272
-|   3  -> 0.436130
-|   4  -> 0.327740
---
-*/
-/*
-++
-|   Get_Ranf: 36117 51106 21478
-|   5  -> 0.821202
-|   6  -> 0.560493
-|   7  -> 0.018157
-|   8  -> 0.872758
-|   9  -> 0.652496
---
-*/
-/*
-++
-|   Ini_Ranf: 36117 51106 21478
-|   5  -> 0.821202
-|   6  -> 0.560493
-|   7  -> 0.018157
-|   8  -> 0.872758
-|   9  -> 0.652496
-|   Get_Ranf: 16576 62373 42761
---
-*/
-/*
-++
-|   
-|    3./ ==> test initialisation automatique
-|   Auto_Ini_Ranf: date 887117206 s 868138 10^-6 sec seed=826006868:
-|   ... njours=10267 nj23=9 buf=826006868.13800001
-|   Ini_Ranf_Quick: 826006868
-|   0  -> 0.798860
-|   1  -> 0.342478
-|   2  -> 0.401300
-|   3  -> 0.442912
-|   4  -> 0.170912
---
-*/
-/*
-++
-|   Auto_Ini_Ranf: date 887117207 s 188779 10^-6 sec seed=826007188:
-|   ... njours=10267 nj23=9 buf=826007188.77900004
-|   Ini_Ranf_Quick: 826007188
-|   0  -> 0.455599
-|   1  -> 0.811427
-|   2  -> 0.703880
-|   3  -> 0.409569
-|   4  -> 0.390399
---
-*/
-/*
-++
-|   Auto_Ini_Ranf: date 887117207 s 489750 10^-6 sec seed=826007489:
-|   ... njours=10267 nj23=9 buf=826007489.75
-|   Ini_Ranf_Quick: 826007489
-|   0  -> 0.567094
-|   1  -> 0.893156
-|   2  -> 0.975995
-|   3  -> 0.531331
-|   4  -> 0.834354
---
-*/
-/*==========================================================================*/
-
-/*==========================================================================*/
-/* 
-++ 
-  Module 	Tirages aleatoires selon une fonction (C)
-  Lib	LibsUtil
-  include	srandgen.h
---
-*/
-/*
-++
-  TIREALEA *init_tirage_alea(int nbin,double xmin,double xmax,double (*fonc) (double))
-	Initialise la structure qui va permettre le tirage aleatoire
-	d'un nombre compris entre xmin et xmax selon la
-	distribution fonc (histo de nbin bins)
---
-*/
-TIREALEA *init_tirage_alea(int nbin,double xmin,double xmax,double (*fonc) (double))
-{
-int sof,i;
-double x;
-struct tirage_alea *t;
-
-if ( xmax-xmin<0.) return(NULL);
-
-if(nbin<=3) nbin=50;
-
-sof = sizeof(struct tirage_alea);
-if( (t = (struct tirage_alea*)malloc(sof) ) == NULL ) {
-  printf("impossible d'allouer *tirage_alea par malloc \n");
-  return(NULL);
-}
-
-t->Nbin=nbin; t->Min=xmin; t->Max=xmax; t->Lbin=(xmax-xmin) /nbin;
-
-sof = nbin * sizeof(double);
-if( (t->Tab = (double*)malloc(sof) ) == NULL ) {
-  printf("impossible d'allouer *tirage_alea.Tab par malloc \n");
-  return(NULL);
-}
-
-x = xmin + .5*t->Lbin;
-t->Tab[0] =  fonc(x);
-for(i=1;i<nbin;i++) {
-  x = xmin + (i+.5)*t->Lbin;
-  t->Tab[i] = t->Tab[i-1] + fonc(x);
-}
-
-for(i=0;i<nbin-1;i++)  t->Tab[i] /= t->Tab[nbin-1];
-t->Tab[nbin-1] = 1.;
-
-return(t);
-}
-
-/*==========================================================================*/
-/*
-++
-  double tirage_alea( TIREALEA *alea )
-	tirage aleatoire d'un nombre compris entre xmin et xmax
-	selon la fonction fonc (cf init_tirage_alea).
---
-*/
-double tirage_alea( TIREALEA *alea )
-{ 
-int i,ibin = -1;
-double z,t1,t2,x1,x2,t;
-
-z=drand01();
-/* protections z<=0 ou z>=1 */
-if( z <= 0. ) return ( alea->Min );
-if( z >= 1. ) return ( alea->Max );
-/* cas z <= tab[0] */
-if(z <= alea->Tab[0]) {
-  t = alea->Min + (alea->Lbin/2.)/alea->Tab[0] * z;
-  return (t);
-}
-
-/* recherche du premier bin plus grand que z */
-for(i=0;i<alea->Nbin;i++) {
-  ibin=i;
-  if ( z < alea->Tab[i] ) break;
-}
-
-/* extrapolation pour trouver la valeur du tirage aleatoire */
-if( ibin == alea->Nbin-1 ) ibin--;
-t1=alea->Tab[ibin];
-x1 = alea->Min + (ibin+0.5) * alea->Lbin;
-t2=alea->Tab[ibin+1];
-x2 = x1 + alea->Lbin;
-t = x1 + (x2-x1)/(t2-t1) *(z-t1);
-if ( t < alea->Min ) t = alea->Min;
-if ( t > alea->Max ) t = alea->Max;
-return(t);
-}
-
-/*==========================================================================*/
-/*
-++
-  int end_tirage_alea( TIREALEA *alea )
-	De-allocation de la structure qui a permis le tirage aleatoire.
---
-*/
-int end_tirage_alea( TIREALEA *alea )
-{ 
-if ( alea != NULL ) { free(alea); return(0);}
-  else return(-1);
-}
Index: trunk/SophyaLib/BaseTools/srandgen.h
===================================================================
--- trunk/SophyaLib/BaseTools/srandgen.h	(revision 3614)
+++ trunk/SophyaLib/BaseTools/srandgen.h	(revision 3615)
@@ -1,5 +1,5 @@
-/* fonctions pour generateurs aleatoires     */
-/*                         cmv  23/06/94     */
-/*  R.Ansari 04/2000  Copie de nbrand.h .c   */
+/* fonctions pour generateurs aleatoires  cmv 23/06/94 */
+/*  Copie de nbrand.h .c  .Ansari 04/2000              */
+/* interface avec RandomGeneratorInterface cmv 04/2009 */
 
 #ifndef SRANDGEN_H_SEEN
@@ -8,80 +8,47 @@
 #include "machdefs.h"
 #include <stdlib.h>
+#include <complex>
+#include "randinterf.h"
 
-/* ------- SPECIFIQUE Mac Darwin OSX  <= 10.2 (gcc < 3.x) -------- */
-#if defined(Darwin) &&  defined(__GNUC__) && (__GNUC__ < 3)
-#include "osx_values.h"
-/* Declaration de drand48 et srand48 etc , mis ds SysSpec 
-                                          Reza 11/02/2003 */
-#ifdef __cplusplus
-extern "C" {
-#endif
-unsigned short int * seed48(unsigned short int seed16v[3]);
-void srand48(long seedval);
-/* Faute de mieux pour le moment : */
-#ifdef __cplusplus
-}
-#endif
-#define drand48() ((double)(random())/LONG_MAX)
-#endif
-/* ------- FIN SPECIFIQUE Mac OSX / Darwin V <= 10.2 --------- */
+/* Declaration en fonctions inline interface avec RandomGeneratorInterface global*/
 
-#ifdef __cplusplus
-/* Declaration en fonctions inlines pour du C++ */
-inline float frand01() { return ( (float) drand48() ); }
-inline double drand01() { return ( drand48() ); }
-inline double ranf01() { return ( drand48() ); }
+namespace SOPHYA {
 
-inline float frandpm1() { return ( 2. * (float) drand48()  - 1.); }
-inline double drandpm1() { return ( 2. * drand48() - 1.); }
-inline double ranfpm1() { return ( 2. * drand48() - 1.); }
-#else
-/* les memes en define pour du C */
-#define frand01() ( (float) drand48() )
-#define drand01() ( drand48() )
-#define ranf01() drand01()
 
-#define frandpm1() ( 2. * frand01() - 1.)
-#define drandpm1() ( 2. * drand01() - 1.)
-#define ranfpm1() drandpm1()
-#endif
+inline double drand01() 
+  {return RandomGeneratorInterface::GetGlobalRandGenP()->Flat01();}
+inline double drandpm1() 
+  {return RandomGeneratorInterface::GetGlobalRandGenP()->Flatpm1();}
 
-struct tirage_alea {
-  int Nbin;
-  double Min,Max,Lbin;
-  double *Tab;
-};
-typedef struct tirage_alea TIREALEA;
+inline double NorRand() 
+  {return RandomGeneratorInterface::GetGlobalRandGenP()->Gaussian();}
+inline double Gaussian(double sigma,double mu) 
+  {return RandomGeneratorInterface::GetGlobalRandGenP()->Gaussian(sigma,mu);}
 
-#ifdef __cplusplus
-extern "C" {
-#endif
+inline complex< r_8 > ComplexGaussian()
+  {return RandomGeneratorInterface::GetGlobalRandGenP()->ComplexGaussian();}
+inline complex< r_8 > ComplexGaussian(double sig)
+  {return RandomGeneratorInterface::GetGlobalRandGenP()->ComplexGaussian(sig);}
+inline double ModComplexGaussian(double sig=1.)
+  {return RandomGeneratorInterface::GetGlobalRandGenP()->ModComplexGaussian(sig);}
 
-void Ini_Ranf_Quick(long seed_val, int lp);
-void Ini_Ranf(unsigned short seed_16v[3], int lp);
-void Get_Ranf(unsigned short seed_16v[3], int lp);
-void Auto_Ini_Ranf(int lp);
+inline double Poisson(double mu, double mumax=-1) 
+  {return RandomGeneratorInterface::GetGlobalRandGenP()->Poisson(mu,mumax);}
 
-void SetGauRange(double range);
-double NorRand1(void);
-double GauRnd1(double am, double s);
-double NorRand(void);
-double GauRnd(double am, double s);
-int NormCo(double *a,double *b
-          ,double mx,double my,double sx,double sy,double ro);
-void NormGau(double *x,double *y
-            ,double mx,double my,double sa,double sb,double teta);
+inline double Exponential() 
+  {return RandomGeneratorInterface::GetGlobalRandGenP()->Exponential();}
 
-int PoissRand(double mu);
-unsigned long PoissRandLimit(double mu,double mumax /* =10. */ );
+inline int Gaussian2DRho(double &x,double &y,double mx,double my,double sx,double sy,double ro)
+  {return RandomGeneratorInterface::GetGlobalRandGenP()->Gaussian2DRho(x,y,mx,my,sx,sy,ro);}
+inline void Gaussian2DAng(double &x,double &y,double mx,double my,double sa,double sb,double teta)
+  {return RandomGeneratorInterface::GetGlobalRandGenP()->Gaussian2DAng(x,y,mx,my,sa,sb,teta);}
 
-TIREALEA *init_tirage_alea(int nbin,double xmin,double xmax,double (*fonc) (double));
-double tirage_alea(TIREALEA *alea);
-int end_tirage_alea(TIREALEA *alea);
+inline void AutoInitRand(int lp)
+  {return RandomGeneratorInterface::GetGlobalRandGenP()->AutoInit(lp);}
 
-#ifdef __cplusplus
-}
-#endif
+inline void ShowRandom()
+  {return RandomGeneratorInterface::GetGlobalRandGenP()->ShowRandom();}
+
+}  /* namespace SOPHYA */
 
 #endif
-
Index: trunk/SophyaLib/BuildMgr/change_smake2make.csh
===================================================================
--- trunk/SophyaLib/BuildMgr/change_smake2make.csh	(revision 3614)
+++ trunk/SophyaLib/BuildMgr/change_smake2make.csh	(revision 3615)
@@ -10,5 +10,5 @@
 #--- Recherche des repertoires sous CVS
 if( $#argv > 0 ) then
-  set dcvs = $1
+  set dcvs = ( $* )
 else
   set dcvs =
Index: trunk/SophyaLib/HiStats/Makefile
===================================================================
--- trunk/SophyaLib/HiStats/Makefile	(revision 3614)
+++ trunk/SophyaLib/HiStats/Makefile	(revision 3615)
@@ -34,4 +34,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -63,4 +64,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -97,4 +99,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -132,4 +135,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -159,4 +163,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
@@ -186,4 +191,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
@@ -222,4 +228,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -262,4 +269,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -298,4 +306,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -371,4 +380,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
Index: trunk/SophyaLib/HiStats/smakefile
===================================================================
--- trunk/SophyaLib/HiStats/smakefile	(revision 3614)
+++ trunk/SophyaLib/HiStats/smakefile	(revision 3615)
@@ -34,4 +34,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -63,4 +64,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -97,4 +99,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -132,4 +135,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -159,4 +163,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
@@ -186,4 +191,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
@@ -222,4 +228,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -262,4 +269,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -298,4 +306,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -371,4 +380,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
Index: trunk/SophyaLib/Manual/Makefile
===================================================================
--- trunk/SophyaLib/Manual/Makefile	(revision 3614)
+++ trunk/SophyaLib/Manual/Makefile	(revision 3615)
@@ -6,10 +6,10 @@
 clean:
 	rm -rf *.o dox_filter
-	if [ -d /home/manip/mnt/planck/cmv/SophyaWork/Linux/../Manual/ ] ; then cd /home/manip/mnt/planck/cmv/SophyaWork/Linux/../Manual// ; rm -rf html latex man rtf; fi
+	if [ -d /home/local/SophyaWork/Linux/doc/ ] ; then cd /home/local/SophyaWork/Linux/doc// ; rm -rf html latex man rtf; fi
 
 #-------------------------------------------------------
 copy: 
-	if [ ! -d /home/manip/mnt/planck/cmv/SophyaWork/Linux/../Manual//latex ] ; then mkdir /home/manip/mnt/planck/cmv/SophyaWork/Linux/../Manual//latex; fi
-	cp -p *.tex *.sty *.eps *.inc /home/manip/mnt/planck/cmv/SophyaWork/Linux/../Manual//latex/.
+	if [ ! -d /home/local/SophyaWork/Linux/doc//latex ] ; then mkdir /home/local/SophyaWork/Linux/doc//latex; fi
+	cp -p *.tex *.sty *.eps *.inc /home/local/SophyaWork/Linux/doc//latex/.
 
 #-------------------------------------------------------
@@ -25,8 +25,8 @@
 
 #-------------------------------------------------------
-sophya: copy /home/manip/mnt/planck/cmv/SophyaWork/Linux/../Manual//latex/sophya.ps
+sophya: copy /home/local/SophyaWork/Linux/doc//latex/sophya.ps
 
-/home/manip/mnt/planck/cmv/SophyaWork/Linux/../Manual//latex/sophya.ps: sophya.tex defsophya.sty blue_sophya_400.eps ex1.inc
-	cd /home/manip/mnt/planck/cmv/SophyaWork/Linux/../Manual//latex/; \
+/home/local/SophyaWork/Linux/doc//latex/sophya.ps: sophya.tex defsophya.sty blue_sophya_400.eps ex1.inc
+	cd /home/local/SophyaWork/Linux/doc//latex/; \
 	latex sophya.tex; \
 	makeindex sophya; \
@@ -34,8 +34,8 @@
 	dvips -o sophya.ps sophya.dvi
 
-piapp: copy /home/manip/mnt/planck/cmv/SophyaWork/Linux/../Manual//latex/piapp.ps
+piapp: copy /home/local/SophyaWork/Linux/doc//latex/piapp.ps
 
-/home/manip/mnt/planck/cmv/SophyaWork/Linux/../Manual//latex/piapp.ps: piapp.tex piahelp.tex defsophya.sty
-	cd /home/manip/mnt/planck/cmv/SophyaWork/Linux/../Manual//latex/; \
+/home/local/SophyaWork/Linux/doc//latex/piapp.ps: piapp.tex piahelp.tex defsophya.sty
+	cd /home/local/SophyaWork/Linux/doc//latex/; \
 	latex piapp.tex; \
 	makeindex piapp; \
@@ -43,8 +43,8 @@
 	dvips -o piapp.ps piapp.dvi
 
-pmixer: copy /home/manip/mnt/planck/cmv/SophyaWork/Linux/../Manual//latex/pmixer.ps
+pmixer: copy /home/local/SophyaWork/Linux/doc//latex/pmixer.ps
 
-/home/manip/mnt/planck/cmv/SophyaWork/Linux/../Manual//latex/pmixer.ps: pmixer.tex
-	cd /home/manip/mnt/planck/cmv/SophyaWork/Linux/../Manual//latex/; \
+/home/local/SophyaWork/Linux/doc//latex/pmixer.ps: pmixer.tex
+	cd /home/local/SophyaWork/Linux/doc//latex/; \
 	latex pmixer.tex; \
 	latex pmixer; \
Index: trunk/SophyaLib/Manual/piahelp.tex
===================================================================
--- trunk/SophyaLib/Manual/piahelp.tex	(revision 3614)
+++ trunk/SophyaLib/Manual/piahelp.tex	(revision 3615)
@@ -328,5 +328,5 @@
 \begin{verbatim} 
 > Automatic random number generator initialisation
-   by Auto_Ini_Ranf(int lp) 
+   by AutoInitRand(int lp) 
    Usage: autoiniranf
 \end{verbatim} 
Index: trunk/SophyaLib/NTools/Makefile
===================================================================
--- trunk/SophyaLib/NTools/Makefile	(revision 3614)
+++ trunk/SophyaLib/NTools/Makefile	(revision 3615)
@@ -33,4 +33,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
@@ -67,4 +68,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)fioarr.h \
@@ -114,4 +116,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -120,11 +123,13 @@
  
 $(SOPHYAOBJP)dynccd.o: dynccd.cc $(SOPHYAINCP)sopnamsp.h \
-  $(SOPHYAINCP)machdefs.h fmath.h perandom.h \
-  $(SOPHYAINCP)tvector.h \
-  $(SOPHYAINCP)tmatrix.h \
-  $(SOPHYAINCP)machdefs.h \
-  $(SOPHYAINCP)tarray.h \
-  $(SOPHYAINCP)basarr.h \
-  $(SOPHYAINCP)anydataobj.h \
+  $(SOPHYAINCP)machdefs.h fmath.h \
+  $(SOPHYAINCP)srandgen.h \
+  $(SOPHYAINCP)machdefs.h \
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)anydataobj.h perandom.h \
+  $(SOPHYAINCP)tvector.h \
+  $(SOPHYAINCP)tmatrix.h \
+  $(SOPHYAINCP)tarray.h \
+  $(SOPHYAINCP)basarr.h \
   $(SOPHYAINCP)mutyv.h \
   $(SOPHYAINCP)timestamp.h \
@@ -146,6 +151,5 @@
   $(SOPHYAINCP)perrors.h \
   $(SOPHYAINCP)fmath.h \
-  $(SOPHYAINCP)tvector.h \
-  $(SOPHYAINCP)srandgen.h classfunc.h cimage.h \
+  $(SOPHYAINCP)tvector.h classfunc.h cimage.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)fioarr.h dynccd.h \
@@ -175,4 +179,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -207,4 +212,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -239,4 +245,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -266,4 +273,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -292,4 +300,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -319,4 +328,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -346,4 +356,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -378,4 +389,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -418,4 +430,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -458,4 +471,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -488,4 +502,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h cimage.h \
   $(SOPHYAINCP)fioarr.h \
@@ -512,10 +527,12 @@
   $(SOPHYAINCP)machdefs.h \
   $(SOPHYAINCP)pexceptions.h \
-  $(SOPHYAINCP)machdefs.h perandom.h \
-  $(SOPHYAINCP)tvector.h \
-  $(SOPHYAINCP)tmatrix.h \
-  $(SOPHYAINCP)tarray.h \
-  $(SOPHYAINCP)basarr.h \
-  $(SOPHYAINCP)anydataobj.h \
+  $(SOPHYAINCP)machdefs.h \
+  $(SOPHYAINCP)srandgen.h \
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)anydataobj.h perandom.h \
+  $(SOPHYAINCP)tvector.h \
+  $(SOPHYAINCP)tmatrix.h \
+  $(SOPHYAINCP)tarray.h \
+  $(SOPHYAINCP)basarr.h \
   $(SOPHYAINCP)mutyv.h \
   $(SOPHYAINCP)timestamp.h \
@@ -537,6 +554,5 @@
   $(SOPHYAINCP)perrors.h \
   $(SOPHYAINCP)fmath.h \
-  $(SOPHYAINCP)tvector.h \
-  $(SOPHYAINCP)srandgen.h classfunc.h pemath.h
+  $(SOPHYAINCP)tvector.h classfunc.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  perandom.cc
  
@@ -564,4 +580,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -594,4 +611,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -629,4 +647,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generalfit.h \
@@ -680,4 +699,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
Index: trunk/SophyaLib/NTools/dynccd.cc
===================================================================
--- trunk/SophyaLib/NTools/dynccd.cc	(revision 3614)
+++ trunk/SophyaLib/NTools/dynccd.cc	(revision 3615)
@@ -5,4 +5,5 @@
 
 #include "fmath.h"
+#include "srandgen.h"
 #include "perandom.h"
 
Index: trunk/SophyaLib/NTools/perandom.cc
===================================================================
--- trunk/SophyaLib/NTools/perandom.cc	(revision 3614)
+++ trunk/SophyaLib/NTools/perandom.cc	(revision 3615)
@@ -1,8 +1,8 @@
 #include "sopnamsp.h"
 #include "machdefs.h"
+#include <iostream>
 #include "pexceptions.h"
+#include "srandgen.h"
 #include "perandom.h"
-#include "pemath.h"
-#include <iostream>
 
 
@@ -290,53 +290,2 @@
 }
 
-
-
-/////////////////////////////////////////////////////////////////
-/*
-**** Remarques sur complex< r_8 > ComplexGaussRan(double sig) ****
-
---- variables gaussiennes x,y independantes
-x gaussien: pdf f(x) = 1/(sqrt(2Pi) Sx) exp(-(x-Mx)^2/(2 Sx^2))
-y gaussien: pdf f(y) = 1/(sqrt(2Pi) Sy) exp(-(y-My)^2/(2 Sy^2))
-x,y independants --> pdf f(x,y) = f(x) f(y)
-On a:
-  <x>   = Integrate[x*f(x)]   = Mx
-  <x^2> = Integrate[x^2*f(x)] = Mx^2 + Sx^2
-
---- On cherche la pdf g(r,t) du module et de la phase
-  x = r cos(t) ,  y = r sin(t)
-  r=sqrt(x^2+y^2 , t=atan2(y,x)
-  (r,t) --> (x,y): le Jacobien = r
-
-  g(r,t) = r f(x,y) = r f(x) f(y)
-         = r/(2Pi Sx Sy) exp(-(x-Mx)^2/(2 Sx^2)) exp(-(y-My)^2/(2 Sy^2))
-
-- Le cas general est complique
-  (cf D.Pelat cours DEA "bruits et signaux" section 4.5)
-
-- Cas ou "Mx = My = 0" et "Sx = Sy = S"
-  c'est la pdf du module et de la phase d'un nombre complexe
-     dont les parties reelles et imaginaires sont independantes
-     et sont distribuees selon des gaussiennes de variance S^2
-  g(r,t) = r/(2Pi S^2) exp(-r^2/(2 S^2))
-  La distribution de "r" est donc:
-    g(r) = Integrate[g(r,t),{t,0,2Pi}]
-         = r/S^2 exp(-r^2/(2 S^2))
-  La distribution de "t" est donc:
-    g(t) = Integrate[g(r,t),{r,0,Infinity}]
-         = 1 / 2Pi  (distribution uniforme sur [0,2Pi[)
-  Les variables aleatoires r,t sont independantes:
-    g(r,t) = g(r) g(t)
-On a:
-  <r>   = Integrate[r*g(r)]   = sqrt(PI/2)*S
-  <r^2> = Integrate[r^2*g(r)] = 2*S^2
-  <r^3> = Integrate[r^3*g(r)] = 3*sqrt(PI/2)*S^3
-  <r^4> = Integrate[r^4*g(r)] = 8*S^4
-
-- Attention:
-La variable complexe "c = x+iy = r*exp(i*t)" ainsi definie verifie:
-              <|c|^2> = <c c*> = <x^2+y^2> = <r^2> = 2 S^2
-Si on veut generer une variable complexe gaussienne telle que
-     <c c*> = s^2 alors il faut prendre S = s/sqrt(2) comme argument
-
-*/
Index: trunk/SophyaLib/NTools/perandom.h
===================================================================
--- trunk/SophyaLib/NTools/perandom.h	(revision 3614)
+++ trunk/SophyaLib/NTools/perandom.h	(revision 3615)
@@ -12,7 +12,5 @@
 #include "tvector.h"
 #include "histos.h"
-#include "srandgen.h"
 #include "classfunc.h"
-#include <complex>
 
 namespace SOPHYA {  
@@ -54,21 +52,4 @@
 };
 
-
-/*!
-  \ingroup NTools
-  \brief Returns a random complex number such that real and imaginary parts are gaussians with variance sig^2
-*/
-inline complex< r_8 > ComplexGaussRan(void)
-  {return complex< r_8 >(NorRand(),NorRand());}
-inline complex< r_8 > ComplexGaussRan(double sig)
-  {return complex< r_8 >(GauRnd(0.,sig),GauRnd(0.,sig));}
-
-/*!
-  \ingroup NTools
-  \brief Returns the module of a random complex number generated by ComplexGaussRan
-*/
-inline double ModComplexGaussRan(double sig=1.)
-  {double r=-log(1.-drand01()); return sig*sqrt(2.*r);}
-
 } // namespace SOPHYA
 
Index: trunk/SophyaLib/NTools/smakefile
===================================================================
--- trunk/SophyaLib/NTools/smakefile	(revision 3614)
+++ trunk/SophyaLib/NTools/smakefile	(revision 3615)
@@ -33,4 +33,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
@@ -67,4 +68,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)fioarr.h \
@@ -114,4 +116,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -120,11 +123,13 @@
  
 $(SOPHYAOBJP)dynccd.o: dynccd.cc $(SOPHYAINCP)sopnamsp.h \
-  $(SOPHYAINCP)machdefs.h fmath.h perandom.h \
-  $(SOPHYAINCP)tvector.h \
-  $(SOPHYAINCP)tmatrix.h \
-  $(SOPHYAINCP)machdefs.h \
-  $(SOPHYAINCP)tarray.h \
-  $(SOPHYAINCP)basarr.h \
-  $(SOPHYAINCP)anydataobj.h \
+  $(SOPHYAINCP)machdefs.h fmath.h \
+  $(SOPHYAINCP)srandgen.h \
+  $(SOPHYAINCP)machdefs.h \
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)anydataobj.h perandom.h \
+  $(SOPHYAINCP)tvector.h \
+  $(SOPHYAINCP)tmatrix.h \
+  $(SOPHYAINCP)tarray.h \
+  $(SOPHYAINCP)basarr.h \
   $(SOPHYAINCP)mutyv.h \
   $(SOPHYAINCP)timestamp.h \
@@ -146,6 +151,5 @@
   $(SOPHYAINCP)perrors.h \
   $(SOPHYAINCP)fmath.h \
-  $(SOPHYAINCP)tvector.h \
-  $(SOPHYAINCP)srandgen.h classfunc.h cimage.h \
+  $(SOPHYAINCP)tvector.h classfunc.h cimage.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)fioarr.h dynccd.h \
@@ -175,4 +179,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -207,4 +212,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -239,4 +245,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -266,4 +273,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -292,4 +300,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -319,4 +328,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -346,4 +356,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -378,4 +389,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -418,4 +430,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generaldata.h \
@@ -458,4 +471,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -488,4 +502,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h cimage.h \
   $(SOPHYAINCP)fioarr.h \
@@ -512,10 +527,12 @@
   $(SOPHYAINCP)machdefs.h \
   $(SOPHYAINCP)pexceptions.h \
-  $(SOPHYAINCP)machdefs.h perandom.h \
-  $(SOPHYAINCP)tvector.h \
-  $(SOPHYAINCP)tmatrix.h \
-  $(SOPHYAINCP)tarray.h \
-  $(SOPHYAINCP)basarr.h \
-  $(SOPHYAINCP)anydataobj.h \
+  $(SOPHYAINCP)machdefs.h \
+  $(SOPHYAINCP)srandgen.h \
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)anydataobj.h perandom.h \
+  $(SOPHYAINCP)tvector.h \
+  $(SOPHYAINCP)tmatrix.h \
+  $(SOPHYAINCP)tarray.h \
+  $(SOPHYAINCP)basarr.h \
   $(SOPHYAINCP)mutyv.h \
   $(SOPHYAINCP)timestamp.h \
@@ -537,6 +554,5 @@
   $(SOPHYAINCP)perrors.h \
   $(SOPHYAINCP)fmath.h \
-  $(SOPHYAINCP)tvector.h \
-  $(SOPHYAINCP)srandgen.h classfunc.h pemath.h
+  $(SOPHYAINCP)tvector.h classfunc.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  perandom.cc
  
@@ -564,4 +580,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -594,4 +611,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -629,4 +647,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h generalfit.h \
@@ -680,4 +699,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
Index: trunk/SophyaLib/Samba/Makefile
===================================================================
--- trunk/SophyaLib/Samba/Makefile	(revision 3614)
+++ trunk/SophyaLib/Samba/Makefile	(revision 3615)
@@ -12,26 +12,27 @@
  
 $(SOPHYAOBJP)alm.o: alm.cc $(SOPHYAINCP)sopnamsp.h alm.h \
-  $(SOPHYAINCP)stsrand.h \
-  $(SOPHYAINCP)machdefs.h \
-  $(SOPHYAINCP)objfio.h \
-  $(SOPHYAINCP)anydataobj.h \
-  $(SOPHYAINCP)ppersist.h \
-  $(SOPHYAINCP)pexceptions.h \
-  $(SOPHYAINCP)gnumd5.h \
-  $(SOPHYAINCP)ppfbinstream.h \
-  $(SOPHYAINCP)rawstream.h \
-  $(SOPHYAINCP)ppfnametag.h \
-  $(SOPHYAINCP)ndatablock.h \
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)machdefs.h \
+  $(SOPHYAINCP)anydataobj.h \
   $(SOPHYAINCP)nbmath.h \
   $(SOPHYAINCP)smathconst.h \
   $(SOPHYAINCP)triangmtx.h \
-  $(SOPHYAINCP)tvector.h \
-  $(SOPHYAINCP)tmatrix.h \
-  $(SOPHYAINCP)tarray.h \
-  $(SOPHYAINCP)basarr.h \
-  $(SOPHYAINCP)mutyv.h \
-  $(SOPHYAINCP)timestamp.h \
-  $(SOPHYAINCP)dvlist.h \
-  $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)ndatablock.h \
+  $(SOPHYAINCP)pexceptions.h \
+  $(SOPHYAINCP)tvector.h \
+  $(SOPHYAINCP)tmatrix.h \
+  $(SOPHYAINCP)tarray.h \
+  $(SOPHYAINCP)basarr.h \
+  $(SOPHYAINCP)mutyv.h \
+  $(SOPHYAINCP)timestamp.h \
+  $(SOPHYAINCP)objfio.h \
+  $(SOPHYAINCP)ppersist.h \
+  $(SOPHYAINCP)gnumd5.h \
+  $(SOPHYAINCP)ppfbinstream.h \
+  $(SOPHYAINCP)rawstream.h \
+  $(SOPHYAINCP)ppfnametag.h \
+  $(SOPHYAINCP)dvlist.h \
+  $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h
@@ -41,5 +42,7 @@
   $(SOPHYAINCP)fmath.h bruit.h \
   $(SOPHYAINCP)srandgen.h \
-  $(SOPHYAINCP)machdefs.h
+  $(SOPHYAINCP)machdefs.h \
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)anydataobj.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  bruit.cc
  
@@ -91,7 +94,8 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h alm.h \
-  $(SOPHYAINCP)stsrand.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)nbmath.h \
   $(SOPHYAINCP)smathconst.h \
@@ -129,4 +133,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -195,4 +200,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -200,5 +206,5 @@
   $(SOPHYAINCP)fftpserver.h \
   $(SOPHYAINCP)fftservintf.h \
-  $(SOPHYAINCP)stsrand.h alm.h \
+  $(SOPHYAINCP)randinterf.h alm.h \
   $(SOPHYAINCP)nbmath.h \
   $(SOPHYAINCP)triangmtx.h \
Index: trunk/SophyaLib/Samba/smakefile
===================================================================
--- trunk/SophyaLib/Samba/smakefile	(revision 3614)
+++ trunk/SophyaLib/Samba/smakefile	(revision 3615)
@@ -12,26 +12,27 @@
  
 $(SOPHYAOBJP)alm.o: alm.cc $(SOPHYAINCP)sopnamsp.h alm.h \
-  $(SOPHYAINCP)stsrand.h \
-  $(SOPHYAINCP)machdefs.h \
-  $(SOPHYAINCP)objfio.h \
-  $(SOPHYAINCP)anydataobj.h \
-  $(SOPHYAINCP)ppersist.h \
-  $(SOPHYAINCP)pexceptions.h \
-  $(SOPHYAINCP)gnumd5.h \
-  $(SOPHYAINCP)ppfbinstream.h \
-  $(SOPHYAINCP)rawstream.h \
-  $(SOPHYAINCP)ppfnametag.h \
-  $(SOPHYAINCP)ndatablock.h \
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)machdefs.h \
+  $(SOPHYAINCP)anydataobj.h \
   $(SOPHYAINCP)nbmath.h \
   $(SOPHYAINCP)smathconst.h \
   $(SOPHYAINCP)triangmtx.h \
-  $(SOPHYAINCP)tvector.h \
-  $(SOPHYAINCP)tmatrix.h \
-  $(SOPHYAINCP)tarray.h \
-  $(SOPHYAINCP)basarr.h \
-  $(SOPHYAINCP)mutyv.h \
-  $(SOPHYAINCP)timestamp.h \
-  $(SOPHYAINCP)dvlist.h \
-  $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)ndatablock.h \
+  $(SOPHYAINCP)pexceptions.h \
+  $(SOPHYAINCP)tvector.h \
+  $(SOPHYAINCP)tmatrix.h \
+  $(SOPHYAINCP)tarray.h \
+  $(SOPHYAINCP)basarr.h \
+  $(SOPHYAINCP)mutyv.h \
+  $(SOPHYAINCP)timestamp.h \
+  $(SOPHYAINCP)objfio.h \
+  $(SOPHYAINCP)ppersist.h \
+  $(SOPHYAINCP)gnumd5.h \
+  $(SOPHYAINCP)ppfbinstream.h \
+  $(SOPHYAINCP)rawstream.h \
+  $(SOPHYAINCP)ppfnametag.h \
+  $(SOPHYAINCP)dvlist.h \
+  $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h
@@ -41,5 +42,7 @@
   $(SOPHYAINCP)fmath.h bruit.h \
   $(SOPHYAINCP)srandgen.h \
-  $(SOPHYAINCP)machdefs.h
+  $(SOPHYAINCP)machdefs.h \
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)anydataobj.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  bruit.cc
  
@@ -91,7 +94,8 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h alm.h \
-  $(SOPHYAINCP)stsrand.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)nbmath.h \
   $(SOPHYAINCP)smathconst.h \
@@ -129,4 +133,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -195,4 +200,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -200,5 +206,5 @@
   $(SOPHYAINCP)fftpserver.h \
   $(SOPHYAINCP)fftservintf.h \
-  $(SOPHYAINCP)stsrand.h alm.h \
+  $(SOPHYAINCP)randinterf.h alm.h \
   $(SOPHYAINCP)nbmath.h \
   $(SOPHYAINCP)triangmtx.h \
Index: trunk/SophyaLib/SkyMap/Makefile
===================================================================
--- trunk/SophyaLib/SkyMap/Makefile	(revision 3614)
+++ trunk/SophyaLib/SkyMap/Makefile	(revision 3615)
@@ -33,4 +33,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -64,4 +65,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h localmap.h \
@@ -100,4 +102,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -134,4 +137,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -167,4 +171,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -199,4 +204,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -260,4 +266,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -293,4 +300,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -327,4 +335,5 @@
   $(SOPHYAINCP)dvlist.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -373,4 +382,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
Index: trunk/SophyaLib/SkyMap/smakefile
===================================================================
--- trunk/SophyaLib/SkyMap/smakefile	(revision 3614)
+++ trunk/SophyaLib/SkyMap/smakefile	(revision 3615)
@@ -33,4 +33,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -64,4 +65,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h localmap.h \
@@ -100,4 +102,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -134,4 +137,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -167,4 +171,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -199,4 +204,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -260,4 +266,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -293,4 +300,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -327,4 +335,5 @@
   $(SOPHYAINCP)dvlist.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -373,4 +382,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
Index: trunk/SophyaLib/SkyT/Makefile
===================================================================
--- trunk/SophyaLib/SkyT/Makefile	(revision 3614)
+++ trunk/SophyaLib/SkyT/Makefile	(revision 3615)
@@ -111,4 +111,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -142,4 +143,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h gaussfilt.h
@@ -169,4 +171,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h
@@ -194,4 +197,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
Index: trunk/SophyaLib/SkyT/smakefile
===================================================================
--- trunk/SophyaLib/SkyT/smakefile	(revision 3614)
+++ trunk/SophyaLib/SkyT/smakefile	(revision 3615)
@@ -111,4 +111,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -142,4 +143,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h gaussfilt.h
@@ -169,4 +171,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h
@@ -194,4 +197,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
Index: trunk/SophyaLib/SysTools/Makefile
===================================================================
--- trunk/SophyaLib/SysTools/Makefile	(revision 3614)
+++ trunk/SophyaLib/SysTools/Makefile	(revision 3615)
@@ -15,5 +15,7 @@
   $(SOPHYAINCP)pexceptions.h \
   $(SOPHYAINCP)machdefs.h \
-  $(SOPHYAINCP)srandgen.h
+  $(SOPHYAINCP)srandgen.h \
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)anydataobj.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  cexpre.cc
  
@@ -35,9 +37,10 @@
   $(SOPHYAINCP)strutilxx.h cexpre.h \
   $(SOPHYAINCP)pexceptions.h rpneval.h \
-  $(SOPHYAINCP)srandgen.h zthread.h
+  $(SOPHYAINCP)srandgen.h \
+  $(SOPHYAINCP)randinterf.h zthread.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  commander.cc
  
-$(SOPHYAOBJP)ctimer.o: ctimer.cc $(SOPHYAINCP)sopnamsp.h \
-  $(SOPHYAINCP)machdefs.h ctimer.h
+$(SOPHYAOBJP)ctimer.o: ctimer.cc $(SOPHYAINCP)machdefs.h \
+  $(SOPHYAINCP)sopnamsp.h ctimer.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  ctimer.cc
  
@@ -70,5 +73,7 @@
   $(SOPHYAINCP)machdefs.h \
   $(SOPHYAINCP)strutilxx.h \
-  $(SOPHYAINCP)srandgen.h
+  $(SOPHYAINCP)srandgen.h \
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)anydataobj.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  rpneval.cc
  
Index: trunk/SophyaLib/SysTools/cexpre.cc
===================================================================
--- trunk/SophyaLib/SysTools/cexpre.cc	(revision 3614)
+++ trunk/SophyaLib/SysTools/cexpre.cc	(revision 3615)
@@ -220,5 +220,5 @@
 static double _CE_rand01() { return drand01(); }
 static double _CE_randpm1() { return drandpm1(); }
-static double _CE_gaurand() { return GauRnd(0., 1.); }
+static double _CE_gaurand() { return Gaussian(1.,0.); }
 //---------------------------------------------------------
 CE_FuncExp::CE_FuncExp(string const & func)
Index: trunk/SophyaLib/SysTools/commander.cc
===================================================================
--- trunk/SophyaLib/SysTools/commander.cc	(revision 3614)
+++ trunk/SophyaLib/SysTools/commander.cc	(revision 3615)
@@ -584,5 +584,5 @@
 kw = "autoiniranf";
 usage  = "> Automatic random number generator initialisation\n";
-usage += "   by Auto_Ini_Ranf(int lp) \n";
+usage += "   by AutoInitRand(int lp) \n";
 usage += "   Usage: autoiniranf";
 RegisterCommand(kw, usage, NULL, grp);
@@ -1955,5 +1955,5 @@
   }
 else if (kw == "autoiniranf") { 
-  Auto_Ini_Ranf(1);
+  AutoInitRand(1);
   return(0);
 }
Index: trunk/SophyaLib/SysTools/rpneval.cc
===================================================================
--- trunk/SophyaLib/SysTools/rpneval.cc	(revision 3614)
+++ trunk/SophyaLib/SysTools/rpneval.cc	(revision 3615)
@@ -238,5 +238,5 @@
     }
     else if (args[k] == "gaurand") { 
-      double rnd = GauRnd(0., 1.);
+      double rnd = Gaussian(1.,0.);
       rpnstack_.push(rnd);
     }
Index: trunk/SophyaLib/SysTools/smakefile
===================================================================
--- trunk/SophyaLib/SysTools/smakefile	(revision 3614)
+++ trunk/SophyaLib/SysTools/smakefile	(revision 3615)
@@ -15,5 +15,7 @@
   $(SOPHYAINCP)pexceptions.h \
   $(SOPHYAINCP)machdefs.h \
-  $(SOPHYAINCP)srandgen.h
+  $(SOPHYAINCP)srandgen.h \
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)anydataobj.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  cexpre.cc
  
@@ -35,9 +37,10 @@
   $(SOPHYAINCP)strutilxx.h cexpre.h \
   $(SOPHYAINCP)pexceptions.h rpneval.h \
-  $(SOPHYAINCP)srandgen.h zthread.h
+  $(SOPHYAINCP)srandgen.h \
+  $(SOPHYAINCP)randinterf.h zthread.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  commander.cc
  
-$(SOPHYAOBJP)ctimer.o: ctimer.cc $(SOPHYAINCP)sopnamsp.h \
-  $(SOPHYAINCP)machdefs.h ctimer.h
+$(SOPHYAOBJP)ctimer.o: ctimer.cc $(SOPHYAINCP)machdefs.h \
+  $(SOPHYAINCP)sopnamsp.h ctimer.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  ctimer.cc
  
@@ -70,5 +73,7 @@
   $(SOPHYAINCP)machdefs.h \
   $(SOPHYAINCP)strutilxx.h \
-  $(SOPHYAINCP)srandgen.h
+  $(SOPHYAINCP)srandgen.h \
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)anydataobj.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  rpneval.cc
  
Index: trunk/SophyaLib/TArray/Makefile
===================================================================
--- trunk/SophyaLib/TArray/Makefile	(revision 3614)
+++ trunk/SophyaLib/TArray/Makefile	(revision 3615)
@@ -49,5 +49,6 @@
   $(SOPHYAINCP)dvlist.h \
   $(SOPHYAINCP)mutyv.h \
-  $(SOPHYAINCP)ndatablock.h utilarr.h tmatrix.h \
+  $(SOPHYAINCP)ndatablock.h utilarr.h \
+  $(SOPHYAINCP)randinterf.h tmatrix.h \
   tmatrix_tsnl.h tvector.h tvector_tsnl.h \
   $(SOPHYAINCP)ppersist.h \
@@ -71,5 +72,6 @@
   $(SOPHYAINCP)dvlist.h \
   $(SOPHYAINCP)mutyv.h \
-  $(SOPHYAINCP)ndatablock.h utilarr.h
+  $(SOPHYAINCP)ndatablock.h utilarr.h \
+  $(SOPHYAINCP)randinterf.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  matharr.cc
  
@@ -91,5 +93,6 @@
   $(SOPHYAINCP)mutyv.h \
   $(SOPHYAINCP)ndatablock.h utilarr.h \
-  tmatrix_tsnl.h tvector.h tvector_tsnl.h \
+  $(SOPHYAINCP)randinterf.h tmatrix_tsnl.h \
+  tvector.h tvector_tsnl.h \
   $(SOPHYAINCP)smathconst.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  sopemtx.cc
@@ -111,5 +114,6 @@
   $(SOPHYAINCP)dvlist.h \
   $(SOPHYAINCP)mutyv.h \
-  $(SOPHYAINCP)ndatablock.h utilarr.h
+  $(SOPHYAINCP)ndatablock.h utilarr.h \
+  $(SOPHYAINCP)randinterf.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  tarray.cc
  
@@ -131,5 +135,6 @@
   $(SOPHYAINCP)dvlist.h \
   $(SOPHYAINCP)mutyv.h \
-  $(SOPHYAINCP)ndatablock.h utilarr.h tmatrix.h \
+  $(SOPHYAINCP)ndatablock.h utilarr.h \
+  $(SOPHYAINCP)randinterf.h tmatrix.h \
   tmatrix_tsnl.h tvector.h tvector_tsnl.h \
   $(SOPHYAINCP)ppersist.h
@@ -154,5 +159,5 @@
   $(SOPHYAINCP)mutyv.h \
   $(SOPHYAINCP)ndatablock.h utilarr.h \
-  tmatrix_tsnl.h
+  $(SOPHYAINCP)randinterf.h tmatrix_tsnl.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  tmatrix.cc
  
@@ -175,5 +180,6 @@
   $(SOPHYAINCP)mutyv.h \
   $(SOPHYAINCP)ndatablock.h utilarr.h \
-  tmatrix_tsnl.h tvector_tsnl.h
+  $(SOPHYAINCP)randinterf.h tmatrix_tsnl.h \
+  tvector_tsnl.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  tvector.cc
  
@@ -191,6 +197,8 @@
   $(SOPHYAINCP)rawstream.h \
   $(SOPHYAINCP)ppfnametag.h \
-  $(SOPHYAINCP)stsrand.h \
-  $(SOPHYAINCP)ndatablock.h
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)randr48.h \
+  $(SOPHYAINCP)ndatablock.h \
+  $(SOPHYAINCP)randinterf.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  utilarr.cc
  
Index: trunk/SophyaLib/TArray/smakefile
===================================================================
--- trunk/SophyaLib/TArray/smakefile	(revision 3614)
+++ trunk/SophyaLib/TArray/smakefile	(revision 3615)
@@ -49,5 +49,6 @@
   $(SOPHYAINCP)dvlist.h \
   $(SOPHYAINCP)mutyv.h \
-  $(SOPHYAINCP)ndatablock.h utilarr.h tmatrix.h \
+  $(SOPHYAINCP)ndatablock.h utilarr.h \
+  $(SOPHYAINCP)randinterf.h tmatrix.h \
   tmatrix_tsnl.h tvector.h tvector_tsnl.h \
   $(SOPHYAINCP)ppersist.h \
@@ -71,5 +72,6 @@
   $(SOPHYAINCP)dvlist.h \
   $(SOPHYAINCP)mutyv.h \
-  $(SOPHYAINCP)ndatablock.h utilarr.h
+  $(SOPHYAINCP)ndatablock.h utilarr.h \
+  $(SOPHYAINCP)randinterf.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  matharr.cc
  
@@ -91,5 +93,6 @@
   $(SOPHYAINCP)mutyv.h \
   $(SOPHYAINCP)ndatablock.h utilarr.h \
-  tmatrix_tsnl.h tvector.h tvector_tsnl.h \
+  $(SOPHYAINCP)randinterf.h tmatrix_tsnl.h \
+  tvector.h tvector_tsnl.h \
   $(SOPHYAINCP)smathconst.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  sopemtx.cc
@@ -111,5 +114,6 @@
   $(SOPHYAINCP)dvlist.h \
   $(SOPHYAINCP)mutyv.h \
-  $(SOPHYAINCP)ndatablock.h utilarr.h
+  $(SOPHYAINCP)ndatablock.h utilarr.h \
+  $(SOPHYAINCP)randinterf.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  tarray.cc
  
@@ -131,5 +135,6 @@
   $(SOPHYAINCP)dvlist.h \
   $(SOPHYAINCP)mutyv.h \
-  $(SOPHYAINCP)ndatablock.h utilarr.h tmatrix.h \
+  $(SOPHYAINCP)ndatablock.h utilarr.h \
+  $(SOPHYAINCP)randinterf.h tmatrix.h \
   tmatrix_tsnl.h tvector.h tvector_tsnl.h \
   $(SOPHYAINCP)ppersist.h
@@ -154,5 +159,5 @@
   $(SOPHYAINCP)mutyv.h \
   $(SOPHYAINCP)ndatablock.h utilarr.h \
-  tmatrix_tsnl.h
+  $(SOPHYAINCP)randinterf.h tmatrix_tsnl.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  tmatrix.cc
  
@@ -175,5 +180,6 @@
   $(SOPHYAINCP)mutyv.h \
   $(SOPHYAINCP)ndatablock.h utilarr.h \
-  tmatrix_tsnl.h tvector_tsnl.h
+  $(SOPHYAINCP)randinterf.h tmatrix_tsnl.h \
+  tvector_tsnl.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  tvector.cc
  
@@ -191,6 +197,8 @@
   $(SOPHYAINCP)rawstream.h \
   $(SOPHYAINCP)ppfnametag.h \
-  $(SOPHYAINCP)stsrand.h \
-  $(SOPHYAINCP)ndatablock.h
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)randr48.h \
+  $(SOPHYAINCP)ndatablock.h \
+  $(SOPHYAINCP)randinterf.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  utilarr.cc
  
Index: trunk/SophyaPI/PIGcont/Makefile
===================================================================
--- trunk/SophyaPI/PIGcont/Makefile	(revision 3614)
+++ trunk/SophyaPI/PIGcont/Makefile	(revision 3615)
@@ -130,4 +130,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
Index: trunk/SophyaPI/PIGcont/smakefile
===================================================================
--- trunk/SophyaPI/PIGcont/smakefile	(revision 3614)
+++ trunk/SophyaPI/PIGcont/smakefile	(revision 3615)
@@ -130,4 +130,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
Index: trunk/SophyaPI/PIext/Makefile
===================================================================
--- trunk/SophyaPI/PIext/Makefile	(revision 3614)
+++ trunk/SophyaPI/PIext/Makefile	(revision 3615)
@@ -4,5 +4,5 @@
  
 clean:
-	 rm -f $(SOPHYAOBJP)basexecut.o $(SOPHYAOBJP)contmodex.o $(SOPHYAOBJP)cxxexecutor.o $(SOPHYAOBJP)cxxexecwin.o $(SOPHYAOBJP)flowmodex.o $(SOPHYAOBJP)graphexecut.o $(SOPHYAOBJP)nobjmgr.o $(SOPHYAOBJP)nomdvladapter.o $(SOPHYAOBJP)nomgadapter.o $(SOPHYAOBJP)nomgfdadapter.o $(SOPHYAOBJP)nomherradapter.o $(SOPHYAOBJP)nomhistadapter.o $(SOPHYAOBJP)nomimagadapter.o $(SOPHYAOBJP)nommatvecadapter.o $(SOPHYAOBJP)nomskymapadapter.o $(SOPHYAOBJP)nomspecrespadapter.o $(SOPHYAOBJP)nomstladapter.o $(SOPHYAOBJP)nomtarradapter.o $(SOPHYAOBJP)nomtmatvecadapter.o $(SOPHYAOBJP)pawexecut.o $(SOPHYAOBJP)pi2dvec.o $(SOPHYAOBJP)piacmd.o $(SOPHYAOBJP)piafitting.o $(SOPHYAOBJP)pigfd1.o $(SOPHYAOBJP)pigfd2.o $(SOPHYAOBJP)pihisto.o $(SOPHYAOBJP)pihisto2d.o $(SOPHYAOBJP)piinit.o $(SOPHYAOBJP)pintup3d.o $(SOPHYAOBJP)pintuple.o $(SOPHYAOBJP)pipodrw.o $(SOPHYAOBJP)pisiadw.o $(SOPHYAOBJP)pistdimgapp.o $(SOPHYAOBJP)pistlist.o $(SOPHYAOBJP)pitvmaad.o $(SOPHYAOBJP)servnobjm.o $(SOPHYAOBJP)userfitfunex.o
+	 rm -f $(SOPHYAOBJP)basexecut.o $(SOPHYAOBJP)contmodex.o $(SOPHYAOBJP)cxxexecutor.o $(SOPHYAOBJP)cxxexecwin.o $(SOPHYAOBJP)flowmodex.o $(SOPHYAOBJP)graphexecut.o $(SOPHYAOBJP)nobjmgr.o $(SOPHYAOBJP)nomdvladapter.o $(SOPHYAOBJP)nomgadapter.o $(SOPHYAOBJP)nomgfdadapter.o $(SOPHYAOBJP)nomherradapter.o $(SOPHYAOBJP)nomhistadapter.o $(SOPHYAOBJP)nomimagadapter.o $(SOPHYAOBJP)nomskymapadapter.o $(SOPHYAOBJP)nomspecrespadapter.o $(SOPHYAOBJP)nomtarradapter.o $(SOPHYAOBJP)nomtmatvecadapter.o $(SOPHYAOBJP)pawexecut.o $(SOPHYAOBJP)pi2dvec.o $(SOPHYAOBJP)piacmd.o $(SOPHYAOBJP)piafitting.o $(SOPHYAOBJP)pigfd1.o $(SOPHYAOBJP)pigfd2.o $(SOPHYAOBJP)pihisto.o $(SOPHYAOBJP)pihisto2d.o $(SOPHYAOBJP)piinit.o $(SOPHYAOBJP)pintup3d.o $(SOPHYAOBJP)pintuple.o $(SOPHYAOBJP)pipodrw.o $(SOPHYAOBJP)pisiadw.o $(SOPHYAOBJP)pistdimgapp.o $(SOPHYAOBJP)pistlist.o $(SOPHYAOBJP)pitvmaad.o $(SOPHYAOBJP)servnobjm.o $(SOPHYAOBJP)userfitfunex.o
 	rm -f $(SOPHYALIBP)libPIext.a
  
@@ -109,4 +109,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -237,4 +238,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -305,4 +307,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -545,4 +548,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -654,4 +658,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -722,4 +727,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -837,4 +843,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -899,4 +906,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -960,4 +968,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1030,4 +1039,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1128,4 +1138,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1237,4 +1248,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1307,4 +1319,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1391,4 +1404,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1457,4 +1471,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1499,4 +1514,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1581,4 +1597,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1703,4 +1720,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1805,5 +1823,6 @@
   $(SOPHYAINCP)strutil.h \
   $(SOPHYAINCP)strutilxx.h \
-  $(SOPHYAINCP)srandgen.h pistdimgapp.h \
+  $(SOPHYAINCP)srandgen.h \
+  $(SOPHYAINCP)randinterf.h pistdimgapp.h \
   $(SOPHYAINCP)pisysdep.h \
   $(SOPHYAINCP)piapplx.h \
@@ -1921,4 +1940,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -2056,4 +2076,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -2108,4 +2129,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -2214,5 +2236,7 @@
   $(SOPHYAINCP)parradapter.h \
   $(SOPHYAINCP)lut.h \
-  $(SOPHYAINCP)srandgen.h
+  $(SOPHYAINCP)srandgen.h \
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)anydataobj.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  pihisto2d.cc
  
@@ -2318,4 +2342,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -2477,4 +2502,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -2605,4 +2631,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)fioarr.h \
@@ -2718,4 +2745,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -2776,4 +2804,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
Index: trunk/SophyaPI/PIext/pihisto2d.cc
===================================================================
--- trunk/SophyaPI/PIext/pihisto2d.cc	(revision 3614)
+++ trunk/SophyaPI/PIext/pihisto2d.cc	(revision 3615)
@@ -444,6 +444,6 @@
     int ipt  = int(npt *frac);
     for(int k=0;k<ipt;k++) {
-      double x = left0 + frand01()*dx;
-      double y = bottom0 + frand01()*dy;
+      double x = left0 + drand01()*dx;
+      double y = bottom0 + drand01()*dy;
       g->DrawMarker(x,y);
     }
Index: trunk/SophyaPI/PIext/smakefile
===================================================================
--- trunk/SophyaPI/PIext/smakefile	(revision 3614)
+++ trunk/SophyaPI/PIext/smakefile	(revision 3615)
@@ -109,4 +109,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -237,4 +238,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -305,4 +307,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -545,4 +548,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -654,4 +658,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -722,4 +727,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -837,4 +843,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -899,4 +906,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -960,4 +968,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1030,4 +1039,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1128,4 +1138,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1237,4 +1248,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1307,4 +1319,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1391,4 +1404,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1457,4 +1471,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1499,4 +1514,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1581,4 +1597,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1703,4 +1720,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -1805,5 +1823,6 @@
   $(SOPHYAINCP)strutil.h \
   $(SOPHYAINCP)strutilxx.h \
-  $(SOPHYAINCP)srandgen.h pistdimgapp.h \
+  $(SOPHYAINCP)srandgen.h \
+  $(SOPHYAINCP)randinterf.h pistdimgapp.h \
   $(SOPHYAINCP)pisysdep.h \
   $(SOPHYAINCP)piapplx.h \
@@ -1921,4 +1940,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -2056,4 +2076,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -2108,4 +2129,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -2214,5 +2236,7 @@
   $(SOPHYAINCP)parradapter.h \
   $(SOPHYAINCP)lut.h \
-  $(SOPHYAINCP)srandgen.h
+  $(SOPHYAINCP)srandgen.h \
+  $(SOPHYAINCP)randinterf.h \
+  $(SOPHYAINCP)anydataobj.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  pihisto2d.cc
  
@@ -2318,4 +2342,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -2477,4 +2502,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -2605,4 +2631,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)fioarr.h \
@@ -2718,4 +2745,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -2776,4 +2804,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
Index: trunk/SophyaPI/ProgPI/Makefile
===================================================================
--- trunk/SophyaPI/ProgPI/Makefile	(revision 3614)
+++ trunk/SophyaPI/ProgPI/Makefile	(revision 3615)
@@ -68,4 +68,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -415,4 +416,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -443,5 +445,4 @@
   $(SOPHYAINCP)fftservintf.h \
   $(SOPHYAINCP)fftpserver.h \
-  $(SOPHYAINCP)stsrand.h \
   $(SOPHYAINCP)alm.h \
   $(SOPHYAINCP)nbmath.h \
@@ -542,4 +543,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
Index: trunk/SophyaPI/ProgPI/smakefile
===================================================================
--- trunk/SophyaPI/ProgPI/smakefile	(revision 3614)
+++ trunk/SophyaPI/ProgPI/smakefile	(revision 3615)
@@ -68,4 +68,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -415,4 +416,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -443,5 +445,4 @@
   $(SOPHYAINCP)fftservintf.h \
   $(SOPHYAINCP)fftpserver.h \
-  $(SOPHYAINCP)stsrand.h \
   $(SOPHYAINCP)alm.h \
   $(SOPHYAINCP)nbmath.h \
@@ -542,4 +543,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
Index: trunk/SophyaProg/PMixer/Makefile
===================================================================
--- trunk/SophyaProg/PMixer/Makefile	(revision 3614)
+++ trunk/SophyaProg/PMixer/Makefile	(revision 3615)
@@ -58,4 +58,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -136,4 +137,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -164,4 +166,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -237,4 +240,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -310,4 +314,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -383,4 +388,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
Index: trunk/SophyaProg/PMixer/smakefile
===================================================================
--- trunk/SophyaProg/PMixer/smakefile	(revision 3614)
+++ trunk/SophyaProg/PMixer/smakefile	(revision 3615)
@@ -58,4 +58,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -136,4 +137,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -164,4 +166,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -237,4 +240,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -310,4 +314,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
@@ -383,4 +388,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector.h \
Index: trunk/SophyaProg/PMixer/tgsky.cc
===================================================================
--- trunk/SophyaProg/PMixer/tgsky.cc	(revision 3614)
+++ trunk/SophyaProg/PMixer/tgsky.cc	(revision 3615)
@@ -16,5 +16,5 @@
     cout << " tgsky : Generation of random skies  " << endl;
     cout << " Usage: tgsky NSide TypSky Params FitsFileName [PPFName] " << endl;
-    cout << "   - TypSky = 0  Params= m,sig  , Gaussian(m,sig) " << endl;
+    cout << "   - TypSky = 0  Params= m,sig  , Gaussian(sig,m) " << endl;
     cout << "   - TypSky = 1  Params= m,sig  , OOFNoise(sig) + m" << endl;
     cout << "   - TypSky = 2  Params= K,a,b,m  K*cos(a*teta)*sin(b*phi)+m" << endl;   
Index: trunk/SophyaProg/PrgMap/Makefile
===================================================================
--- trunk/SophyaProg/PrgMap/Makefile	(revision 3614)
+++ trunk/SophyaProg/PrgMap/Makefile	(revision 3615)
@@ -61,4 +61,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
@@ -89,5 +90,4 @@
   $(SOPHYAINCP)samba.h \
   $(SOPHYAINCP)alm.h \
-  $(SOPHYAINCP)stsrand.h \
   $(SOPHYAINCP)nbmath.h \
   $(SOPHYAINCP)triangmtx.h \
@@ -115,5 +115,6 @@
   $(SOPHYAINCP)FitsIO/longnam.h \
   $(SOPHYAINCP)fitshandler.h \
-  $(SOPHYAINCP)fitstarray.h
+  $(SOPHYAINCP)fitstarray.h \
+  $(SOPHYAINCP)randr48.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  cl2map.cc
  
@@ -152,4 +153,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -204,4 +206,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -255,4 +258,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -295,4 +299,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
@@ -323,5 +328,4 @@
   $(SOPHYAINCP)samba.h \
   $(SOPHYAINCP)alm.h \
-  $(SOPHYAINCP)stsrand.h \
   $(SOPHYAINCP)nbmath.h \
   $(SOPHYAINCP)triangmtx.h \
@@ -374,4 +378,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
@@ -402,5 +407,4 @@
   $(SOPHYAINCP)samba.h \
   $(SOPHYAINCP)alm.h \
-  $(SOPHYAINCP)stsrand.h \
   $(SOPHYAINCP)nbmath.h \
   $(SOPHYAINCP)triangmtx.h \
Index: trunk/SophyaProg/PrgMap/smakefile
===================================================================
--- trunk/SophyaProg/PrgMap/smakefile	(revision 3614)
+++ trunk/SophyaProg/PrgMap/smakefile	(revision 3615)
@@ -61,4 +61,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
@@ -89,5 +90,4 @@
   $(SOPHYAINCP)samba.h \
   $(SOPHYAINCP)alm.h \
-  $(SOPHYAINCP)stsrand.h \
   $(SOPHYAINCP)nbmath.h \
   $(SOPHYAINCP)triangmtx.h \
@@ -115,5 +115,6 @@
   $(SOPHYAINCP)FitsIO/longnam.h \
   $(SOPHYAINCP)fitshandler.h \
-  $(SOPHYAINCP)fitstarray.h
+  $(SOPHYAINCP)fitstarray.h \
+  $(SOPHYAINCP)randr48.h
 	$(CXXCOMPILE) $(CXXTEMPFLG) -o $@  cl2map.cc
  
@@ -152,4 +153,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -204,4 +206,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -255,4 +258,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
   $(SOPHYAINCP)tvector_tsnl.h \
@@ -295,4 +299,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
@@ -323,5 +328,4 @@
   $(SOPHYAINCP)samba.h \
   $(SOPHYAINCP)alm.h \
-  $(SOPHYAINCP)stsrand.h \
   $(SOPHYAINCP)nbmath.h \
   $(SOPHYAINCP)triangmtx.h \
@@ -374,4 +378,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
@@ -402,5 +407,4 @@
   $(SOPHYAINCP)samba.h \
   $(SOPHYAINCP)alm.h \
-  $(SOPHYAINCP)stsrand.h \
   $(SOPHYAINCP)nbmath.h \
   $(SOPHYAINCP)triangmtx.h \
Index: trunk/SophyaProg/PrgUtil/Makefile
===================================================================
--- trunk/SophyaProg/PrgUtil/Makefile	(revision 3614)
+++ trunk/SophyaProg/PrgUtil/Makefile	(revision 3615)
@@ -45,4 +45,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
Index: trunk/SophyaProg/PrgUtil/smakefile
===================================================================
--- trunk/SophyaProg/PrgUtil/smakefile	(revision 3614)
+++ trunk/SophyaProg/PrgUtil/smakefile	(revision 3615)
@@ -45,4 +45,5 @@
   $(SOPHYAINCP)ndatablock.h \
   $(SOPHYAINCP)utilarr.h \
+  $(SOPHYAINCP)randinterf.h \
   $(SOPHYAINCP)tmatrix.h \
   $(SOPHYAINCP)tmatrix_tsnl.h \
Index: trunk/SophyaProg/Tests/lpk.cc
===================================================================
--- trunk/SophyaProg/Tests/lpk.cc	(revision 3614)
+++ trunk/SophyaProg/Tests/lpk.cc	(revision 3615)
@@ -92,5 +92,5 @@
   Matrix a(n,n);
   for(i=0; i<n; i++)
-    for(j=0; j<n; j++)  a(j,i) = GauRnd(0., 1.);
+    for(j=0; j<n; j++)  a(j,i) = Gaussian(1.,0.);
   
   Vector x(n), b;
@@ -98,5 +98,5 @@
   if (prtlev > 0) 
     cout << " ------------ Vector X = \n " << x << "\n" << endl; 
-  for(i=0; i<n; i++) x(i) = GauRnd(2., 1.5);
+  for(i=0; i<n; i++) x(i) = Gaussian(1.5,2.);
   b = a*x;
 
Index: trunk/SophyaProg/Tests/tfft.cc
===================================================================
--- trunk/SophyaProg/Tests/tfft.cc	(revision 3614)
+++ trunk/SophyaProg/Tests/tfft.cc	(revision 3615)
@@ -70,5 +70,5 @@
   if (inp_typ_random) 
     for (i=0; i<num ; i++){
-      ino[i] = in[i] = GauRnd(0., 1.);
+      ino[i] = in[i] = Gaussian(1.,0.);
       inc[i] = complex<T> (in[i], 0.);
     }
Index: trunk/SophyaProg/Tests/timg.cc
===================================================================
--- trunk/SophyaProg/Tests/timg.cc	(revision 3614)
+++ trunk/SophyaProg/Tests/timg.cc	(revision 3615)
@@ -34,5 +34,5 @@
 // Remplissage de l'image Tirage aleatoire plat entre 1000-2000
 for(i=0; i<300; i++)
-  for(j=0; j<200; j++) img(i,j) = imgo(i,j) =  frand01()*1000.+1000.;
+  for(j=0; j<200; j++) img(i,j) = imgo(i,j) =  drand01()*1000.+1000.;
 // Verification de la dynamique de l'image
 MeanSigma(img, mean, sig);
Index: trunk/SophyaProg/Tests/tmtrnd.cc
===================================================================
--- trunk/SophyaProg/Tests/tmtrnd.cc	(revision 3614)
+++ trunk/SophyaProg/Tests/tmtrnd.cc	(revision 3615)
@@ -81,10 +81,10 @@
   TVector<r_8> DATA(VSZ);
   {
-    Timer tm("f0_tmtrnd-GauRnd/drand01");
+    Timer tm("f0_tmtrnd-Gaussian/drand01");
     if (fgg) 
-      for(sa_size_t k=0; k<VSZ; k++)  DATA(k) = GauRnd(0., 1.);
+      for(sa_size_t k=0; k<VSZ; k++)  DATA(k) = Gaussian(1.,0.);
     else 
       for(sa_size_t k=0; k<VSZ; k++)  DATA(k) = drand01();
-    cout << "[2] f0_tmtrnd/ End of random generation using GauRnd()/drand01() " << endl;
+    cout << "[2] f0_tmtrnd/ End of random generation using Gaussian()/drand01() " << endl;
   }
   POutPersist po("data0.ppf");
@@ -102,5 +102,5 @@
 //  rg.GetSeed(seed,2);  // pour imprimer l'etat du generateur
   {
-    Timer tm("f0_tmtrnd-GauRnd/drand01");
+    Timer tm("f0_tmtrnd-Gaussian/drand01");
     if (fgg) 
       for(sa_size_t k=0; k<VSZ; k++)  DATA(k) = rg.Gaussian();
@@ -130,5 +130,5 @@
 //  rg.GetSeed(seed,2);  // pour imprimer l'etat du generateur
   {
-    Timer tm("f0_tmtrnd-GauRnd/drand01");
+    Timer tm("f0_tmtrnd-Gaussian/drand01");
     if (fgg) 
       for(sa_size_t k=0; k<VSZ; k++)  DATA(k) = rg.Gaussian();
Index: trunk/SophyaProg/Tests/tsphereecp.cc
===================================================================
--- trunk/SophyaProg/Tests/tsphereecp.cc	(revision 3614)
+++ trunk/SophyaProg/Tests/tsphereecp.cc	(revision 3615)
@@ -12,4 +12,5 @@
 #include "resusage.h"
 
+#include "randr48.h"
 #include "sphereecp.h"
 #include "fiosphereecp.h"
@@ -75,5 +76,5 @@
     }
     // Compute map from spectra
-    RandomGenerator rg; 
+    ThSDR48RandGen rg; 
     SphericalTransformServer<r_8> ylmserver(rg);
     SphereECP<r_8> map(256);
Index: trunk/SophyaProg/Tests/zthr.cc
===================================================================
--- trunk/SophyaProg/Tests/zthr.cc	(revision 3614)
+++ trunk/SophyaProg/Tests/zthr.cc	(revision 3615)
@@ -10,5 +10,5 @@
 #include "matharr.h"
 #include "tarrinit.h"
-#include "stsrand.h"
+#include "randr48.h"
 
 #include <stdlib.h>
@@ -63,5 +63,5 @@
 void randgenths(Array& mx, double sig)
 {
-  RandomGenerator rg;
+  ThSDR48RandGen rg; 
   for(sa_size_t j=0; j<mx.SizeY(); j++)   
     for(sa_size_t i=0; i<mx.SizeX(); i++) mx(i,j) = rg.Gaussian(sig);   
