COIN-OR::LEMON - Graph Library

Changes in / [91:e28fc773f3c0:93:f857981306ea] in lemon-main


Ignore:
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.