COIN-OR::LEMON - Graph Library

Changeset 92:5d4decd1b870 in lemon-1.0


Ignore:
Timestamp:
03/14/08 17:57:49 (12 years ago)
Author:
Alpar Juttner <alpar@…>
Branch:
default
Phase:
public
Message:

Poisson distribution added

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • lemon/random.h

    r68 r92  
    804804    } 
    805805     
     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     
    806829    ///@}
    807830   
  • test/random_test.cc

    r39 r92  
    3434  //Does gamma work with integer k?
    3535  a=lemon::rnd.gamma(4.0,0);
     36  a=lemon::rnd.poisson(.5);
    3637}
Note: See TracChangeset for help on using the changeset viewer.