/* $Id: random.cpp,v 1.12 2005/10/11 15:54:24 chfreund Exp $ */ #include "random.hpp" #include "serialize.hpp" #include #include /* Original MWC code by George Marsaglia */ Random::Random( const unsigned int seed ) : m_z( 362436069 ), m_w( 521288629 ), m_counter( 0 ) { const unsigned int N = (seed > 0 ? seed : ( clock() + getpid() ) & 0xffff); for( unsigned int i = 0; i < N; i++ ) getUint32(); } Uint32 Random::getSerializeBufferSize() const { return Serialize::sizeOf( m_z ) + Serialize::sizeOf( m_w ) + Serialize::sizeOf( m_counter ); } void Random::serialize( Uint8*& bufferPointer ) const { START_SERIALIZED_SIZE_CHECK( bufferPointer ); Serialize::serialize( m_z, bufferPointer ); Serialize::serialize( m_w, bufferPointer ); Serialize::serialize( m_counter, bufferPointer ); END_SERIALIZED_SIZE_CHECK( bufferPointer, Random ); } void Random::deserialize( Uint8*& bufferPointer ) { Serialize::deserialize( bufferPointer, m_z ); Serialize::deserialize( bufferPointer, m_w ); Serialize::deserialize( bufferPointer, m_counter ); } Random localRnd;