Index: /issm/trunk-jpl/src/c/shared/Random/randomgenerator.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Random/randomgenerator.cpp	(revision 26575)
+++ /issm/trunk-jpl/src/c/shared/Random/randomgenerator.cpp	(revision 26576)
@@ -6,72 +6,11 @@
 #include "./randomgenerator.h"
 
-#undef M_PI
-#define M_PI 3.141592653589793238462643
+class uniform_distribution
+{
 
+};
 
-uniform_distribution_rnd::uniform_distribution_rnd(){/*{{{*/
+class normal_distribution
+{
 
-		a   = 1103515245; 	// BSD Formula
-		c  = 12345;					// BSD Formula
-		m = 2147483648;			// BSD Formula
-		_seed = 0;
-		lbound = 0.0;
-		ubound = 1.0;
-		return;
-}
-	/*}}}*/
-uniform_distribution_rnd::uniform_distribution_rnd(double lower,double upper){/*{{{*/
-
-		a   = 1103515245;		// BSD Formula
-		c  = 12345;					// BSD Formula
-		m = 2147483648;			// BSD Formula
-		_seed = 0;
-		lbound = lower;
-		ubound = upper;
-		return;
-}
-	/*}}}*/
-uniform_distribution_rnd::~uniform_distribution_rnd(){}
-void uniform_distribution_rnd::seed( unsigned int s ) { _seed = s; }
-unsigned int uniform_distribution_rnd::get_seed() { return _seed; }
-double uniform_distribution_rnd::generator() {
-		_seed = ( a * _seed + c ) % m ;
-		return (ubound-lbound)*(double) _seed/ m + lbound;
-}
-
-
-normal_distribution_rnd::normal_distribution_rnd(){/*{{{*/
-
-		_seed = 0;
-		mean   = 0;
-		sdev  = 1.0;
-		return;
-}
-/*}}}*/
-normal_distribution_rnd::normal_distribution_rnd(double m,double s){/*{{{*/
-
-		_seed = 0;
-		mean   = m;
-		sdev  = s;
-		return;
-}
-	/*}}}*/
-normal_distribution_rnd::~normal_distribution_rnd(){}
-void normal_distribution_rnd::seed( unsigned int s ) { _seed = s; }
-double normal_distribution_rnd::generator(){/*{{{*/
-
-		uniform_distribution_rnd unifdistri;
-		unifdistri.seed(_seed);
-
-		double u1 = unifdistri.generator();
-		double u2 = unifdistri.generator();
-
-		double R = sqrt(-2*log(u1));
-		double theta = 2*M_PI*u2;
-
-		seed(unifdistri.get_seed());
-
-		return mean + sdev * (R*cos(theta));
-
-	}
-	/*}}}*/
+};
Index: /issm/trunk-jpl/src/c/shared/Random/randomgenerator.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Random/randomgenerator.h	(revision 26575)
+++ /issm/trunk-jpl/src/c/shared/Random/randomgenerator.h	(revision 26576)
@@ -6,26 +6,31 @@
 #define _RANDOMGENERATOR_H_
 
+#undef M_PI
+#define M_PI 3.141592653589793238462643
+
 class uniform_distribution_rnd
 {
 
-    private:
+  private:
 
-      unsigned int a;       //multiplier of the linear congruential generator
-      unsigned int c;       //increment of the linear congruential generator
-      unsigned int m;       // modulo of the linear congruential generator
-      unsigned int _seed;   // seed value
-      double lbound;        // lower bound of uniform distribution
-      double ubound;        // upper bound of uniform distribution
+    unsigned int a;
+    unsigned int c;
+    unsigned int m;
+    unsigned _seed;
+    double a1;
+    double a2;
 
-    public:
+    int drnd() { return( _seed = ( a * _seed + c ) % m ); }
 
-      /*constructors, destructors: */
-      uniform_distribution_rnd();
-      uniform_distribution_rnd(double a_1, double a_2);
-      ~uniform_distribution_rnd();
+  public:
 
-      void seed( unsigned int s );
-      unsigned int get_seed();
-      double generator();
+    /*constructors, destructors: */
+    uniform_distribution_rnd();
+    uniform_distribution_rnd(double a_1, double a_2);
+    ~uniform_distribution_rnd();
+
+    void seed( unsigned int s ) { _seed = s; }
+    unsigned int get_seed() { return _seed; }
+    double rnd() { return (a2-a1)*(double) drnd()/ m + a1; }
 
 };
@@ -34,18 +39,14 @@
 {
 
-    private:
-      unsigned int _seed; // seed value
-      double mean;        // mean value
-      double sdev;        // standard deviation
+  private:
+    unsigned _seed;
+    double mean;
+    double sdev;
 
-    public:
-
-      /*constructors, destructors: */
-      normal_distribution_rnd();
-      normal_distribution_rnd(double m,double s);
-      ~normal_distribution_rnd();
-
-      void seed( unsigned int s );
-      double generator();
+  public:
+    normal_distribution_rnd() : _seed( 0 ), mean( 0), sdev(1.0) {}
+    normal_distribution_rnd(double m,double s) : _seed( 0 ), mean( m ), sdev(s) {}
+    void seed( unsigned int s ) { _seed = s; }
+    double rnd();
 
 };
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_sampling.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_sampling.cpp	(revision 26575)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_sampling.cpp	(revision 26576)
@@ -18,5 +18,5 @@
 
 	/*Define seed*/
-	normal_distribution_rnd distribution;
+	//normal_distribution_rnd distribution;
 	if(seed<0){
 		std::random_device rd;
@@ -29,5 +29,5 @@
 		seed = seed + 783728*my_rank; // change default seed for parallel simulations (by considering an arbitrary shif based on the rank number)
 	}
-	distribution.seed(seed);
+	//distribution.seed(seed);
 
 	int        *local_indices = NULL;
@@ -38,5 +38,5 @@
 	ppf->GetLocalSize(&M);
 	for(int i=0;i<M;i++){
-		rdnumber = distribution.generator();
+		rdnumber = 1.0;//distribution.rnd();
 		ppf->SetValue(local_indices[i],rdnumber,INS_VAL);
 	}
