Changes in lemon/random.h [62:4790635473ef:92:5d4decd1b870] in lemon
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/random.h
r62 r92 68 68 69 69 #include <ctime> 70 #include <cmath> 71 70 71 #include <lemon/math.h> 72 72 #include <lemon/dim2.h> 73 73 74 ///\ingroup misc 74 75 ///\file … … 760 761 double xi,nu; 761 762 const double delta = k-std::floor(k); 762 const double v0= M_E/(M_E-delta);763 const double v0=E/(E-delta); 763 764 do { 764 765 double V0=1.0-real<double>(); … … 803 804 } 804 805 806 /// Poisson distribution 807 808 /// This function generates a Poisson distribution random number with 809 /// parameter \c lambda. 810 /// 811 /// The probability mass function of this distribusion is 812 /// \f[ \frac{e^{-\lambda}\lambda^k}{k!} \f] 813 /// \note The algorithm is taken from the book of Donald E. Knuth titled 814 /// ''Seminumerical Algorithms'' (1969). Its running time is linear in the 815 /// return value. 816 817 int poisson(double lambda) 818 { 819 const double l = std::exp(-lambda); 820 int k=0; 821 double p = 1.0; 822 do { 823 k++; 824 p*=real<double>(); 825 } while (p>=l); 826 return k-1; 827 } 828 805 829 ///@} 806 830
Note: See TracChangeset
for help on using the changeset viewer.