Index: /issm/trunk-jpl/src/c/shared/Random/randomgenerator.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Random/randomgenerator.cpp	(revision 26615)
+++ /issm/trunk-jpl/src/c/shared/Random/randomgenerator.cpp	(revision 26616)
@@ -93,8 +93,8 @@
 	double normal_distribution::generator(rnd::linear_congruential_engine random_engine){/*{{{*/
 
-			rnd::uniform_distribution	unifdistri;
+			rnd::uniform_distribution	distribution;
 
-			double u1 = unifdistri.generator(random_engine);
-			double u2 = unifdistri.generator(random_engine);
+			double u1 = distribution.generator(random_engine);
+			double u2 = distribution.generator(random_engine);
 
 			double R = sqrt(-2*log(u1));
@@ -106,3 +106,86 @@
 	/*}}}*/
 
+  /* Log-Normal distribution */
+
+  lognormal_distribution::lognormal_distribution(){/*{{{*/
+      logmean   = 0;
+      logsdev  = 1.0;
+      return;
+  }
+  /*}}}*/
+
+  lognormal_distribution::lognormal_distribution(double m,double s){/*{{{*/
+      logmean   = m;
+      logsdev  = s;
+      return;
+  }
+  /*}}}*/
+
+  lognormal_distribution::~lognormal_distribution(){}
+
+  double lognormal_distribution::generator(rnd::linear_congruential_engine random_engine){/*{{{*/
+
+      rnd::normal_distribution	distribution(logmean,logsdev);
+
+      return exp(distribution.generator(random_engine));
+
+  }
+  /*}}}*/
+
+  /* Chi-squared distribution */
+
+  chi_squared_distribution::chi_squared_distribution(){/*{{{*/
+      k  = 1;
+      return;
+  }
+  /*}}}*/
+
+  chi_squared_distribution::chi_squared_distribution(unsigned int dof){/*{{{*/
+      k   = dof;
+      return;
+  }
+  /*}}}*/
+
+  chi_squared_distribution::~chi_squared_distribution(){}
+
+  double chi_squared_distribution::generator(rnd::linear_congruential_engine random_engine){/*{{{*/
+
+      rnd::normal_distribution	distribution;
+
+      double rand = 0;
+
+      for(int i=0;i<k;i++)
+        rand = rand + pow(distribution.generator(random_engine),2);
+
+      return rand;
+
+  }
+  /*}}}*/
+
+
+  /* Exponential distribution */
+
+  exponential_distribution::exponential_distribution(){/*{{{*/
+      lambda  = 1.0;
+      return;
+  }
+  /*}}}*/
+
+  exponential_distribution::exponential_distribution(double scale){/*{{{*/
+      lambda   = scale;
+      return;
+  }
+  /*}}}*/
+
+  exponential_distribution::~exponential_distribution(){}
+
+  double exponential_distribution::generator(rnd::linear_congruential_engine random_engine){/*{{{*/
+
+      rnd::uniform_distribution	distribution;
+
+      return -1.0/lambda*log(1.0-distribution.generator(random_engine));
+
+  }
+  /*}}}*/
+
 }
Index: /issm/trunk-jpl/src/c/shared/Random/randomgenerator.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Random/randomgenerator.h	(revision 26615)
+++ /issm/trunk-jpl/src/c/shared/Random/randomgenerator.h	(revision 26616)
@@ -68,4 +68,56 @@
   };
 
+  class lognormal_distribution
+  {
+
+    private:
+      double logmean;
+      double logsdev;
+
+    public:
+
+      /*constructors, destructors: */
+      lognormal_distribution();
+      lognormal_distribution(double m,double s);
+      ~lognormal_distribution();
+
+      double generator(rnd::linear_congruential_engine random_engine);
+
+  };
+
+  class chi_squared_distribution
+  {
+
+    private:
+      unsigned int k;
+
+    public:
+
+      /*constructors, destructors: */
+      chi_squared_distribution();
+      chi_squared_distribution(unsigned int k);
+      ~chi_squared_distribution();
+
+      double generator(rnd::linear_congruential_engine random_engine);
+
+  };
+
+  class exponential_distribution
+  {
+
+    private:
+      double lambda;
+
+    public:
+
+      /*constructors, destructors: */
+      exponential_distribution();
+      exponential_distribution(double scale);
+      ~exponential_distribution();
+
+      double generator(rnd::linear_congruential_engine random_engine);
+
+  };
+
 
 }
