Boost logo

Boost :

From: nbecker_at_[hidden]
Date: 2001-04-02 10:30:14


Thanks for the ideas on the PN generator. Here is a new version that
I think is more in the spirit of boost:

#ifndef PNGen_H
#define PNGen_H

#include <boost/random.hpp>

template<class RNG>
class PNGen {
  RNG& rng;
  typename RNG::result_type cache;
  int cnt;
public:
  PNGen (RNG& _rng) :
    rng (_rng),
    cnt (0)
  {}

  void Refresh() {
    cache = rng();
    cnt = std::numeric_limits<typename RNG::result_type>::digits;
  }

  int Next() {
    int bit = cache & 1;
    cache >>= 1;
    cnt--;
    return bit;
  }

  int Bipolar() {
    return (operator()() == 0) ? -1 : 1;
  }

  int Unipolar() {
    return operator()();
  }

  int operator()() {
    if (cnt == 0)
      Refresh();
    return Next();
  }

};

#endif


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk