/*
 * Copyright (c) 1999 Johnny C. Lam.
 * All rights reserved.
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  The author makes no representations
 * about the suitability of this software for any purpose.  It is
 * provided "as is" without express or implied warranty.
 */

// -*- C++ -*-

#ifndef GEOMETRIC_H_INCLUDED
#define GEOMETRIC_H_INCLUDED

#ifndef TYPES_H_INCLUDED
#include "types.h"
#endif

///////////////////////////////////////////////////////////////////////////
//
// Geometric
//
// Represents a random variable with Geometric(p) distribution.
// Must have a probability operator()(int) member.
//
///////////////////////////////////////////////////////////////////////////

class Geometric {
public:
    Geometric(probability p) : _p(p) {}

    probability	operator()(int) const;

private:
    probability	_p;
};

#endif // GEOMETRIC_H_INCLUDED
