XFuFastRandom.h Source File

Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members Related Pages

# XFuFastRandom.h

Go to the documentation of this file.

    00001 /*! \file
    00002  * X-Forge Util <br>
    00003  * Copyright 2000-2003 Fathammer Ltd
    00004  *
    00005  * \brief Implementation of a "fast" random class.
    00006  *
    00007  * $Id: XFuFastRandom.h,v 1.9 2003/10/03 11:29:31 jetro Exp $
    00008  * $Date: 2003/10/03 11:29:31 $
    00009  * $Revision: 1.9 $
    00010  */
    00011
    00012 #ifndef XFUFASTRANDOM_H_INCLUDED
    00013 #define XFUFASTRANDOM_H_INCLUDED
    00014
    00015
    00016 //! A "fast" pseudo random number generator class.
    00017 /*!
    00018  * Please note that the output from this pseudorandom number generator
    00019  * is pretty poor, but it is suitable when all you need is just some noise.
    00020  */
    00021 class XFuFastRandom
    00022 {
    00023 public:
    00024
    00025     //! Constructor.
    00026     XFuFastRandom();
    00027
    00028     //! Constructor with seed input.
    00029     XFuFastRandom(UINT32 aSeed);
    00030
    00031     //! Returns the next random number.
    00032     inline UINT32 next()
    00033     {
    00034         INT32 v = (INT32)mSeed1;
    00035         mSeed1 = ((v >> 13) + (v << (32 - 13)));
    00036         v = mSeed2 ^ 0x51549515;
    00037         mSeed2 = mSeed1 ^ mSeed2;
    00038         mSeed1 = v;
    00039         return mSeed1;
    00040     }
    00041
    00042     //! Re-seeds the random number generator.
    00043     void seed(UINT32 aSeed);
    00044
    00045 protected:
    00046
    00047     UINT32 mSeed1;      //!< Internal random number generator data.
    00048     UINT32 mSeed2;      //!< Internal random number generator data.
    00049 };
    00050
    00051
    00052 #endif // !XFUFASTRANDOM_H_INCLUDED
    00053

|  | X-Forge Documentation Confidential Copyright © 2002-2003 Fathammer |  | Documentation generated with doxygen by Dimitri van Heesch