gravatar
alpar (Alpar Juttner)
alpar@cs.elte.hu
Pareto and Weibull random distributions
0 1 0
default
1 file changed with 28 insertions and 1 deletions:
↑ Collapse diff ↑
Ignore white space 2 line context
... ...
@@ -739,3 +739,3 @@
739 739
    {
740
      return -std::log(real<double>())/lambda;
740
      return -std::log(1.0-real<double>())/lambda;
741 741
    }
... ...
@@ -784,2 +784,29 @@
784 784
    
785
    /// Weibull distribution
786

	
787
    /// This function generates a Weibull distribution random number.
788
    /// 
789
    ///\param k shape parameter (<tt>k>0</tt>)
790
    ///\param lambda scale parameter (<tt>lambda>0</tt>)
791
    ///
792
    double weibull(double k,double lambda)
793
    {
794
      return lambda*pow(-std::log(1.0-real<double>()),1.0/k);
795
    }  
796
      
797
    /// Pareto distribution
798

	
799
    /// This function generates a Pareto distribution random number.
800
    /// 
801
    ///\param x_min location parameter (<tt>x_min>0</tt>)
802
    ///\param k shape parameter (<tt>k>0</tt>)
803
    ///
804
    ///\warning This function used inverse transform sampling, therefore may
805
    ///suffer from numerical unstability.
806
    ///
807
    ///\todo Implement a numerically stable method
808
    double pareto(double x_min,double k)
809
    {
810
      return x_min*pow(1.0-real<double>(),1.0/k);
811
    }  
785 812
      
0 comments (0 inline)