# Home    # nevrax.com   
Nevrax
Nevrax.org
#News
#Mailing-list
#Documentation
#CVS
#Bugs
#License
Docs
 
Documentation  
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages   Search  

random.cpp

Go to the documentation of this file.
00001 
00006 /* Copyright, 2000, 2001, 2002 Nevrax Ltd.
00007  *
00008  * This file is part of NEVRAX NEL.
00009  * NEVRAX NEL is free software; you can redistribute it and/or modify
00010  * it under the terms of the GNU General Public License as published by
00011  * the Free Software Foundation; either version 2, or (at your option)
00012  * any later version.
00013 
00014  * NEVRAX NEL is distributed in the hope that it will be useful, but
00015  * WITHOUT ANY WARRANTY; without even the implied warranty of
00016  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00017  * General Public License for more details.
00018 
00019  * You should have received a copy of the GNU General Public License
00020  * along with NEVRAX NEL; see the file COPYING. If not, write to the
00021  * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
00022  * MA 02111-1307, USA.
00023  */
00024 
00025 #include "stdmisc.h"
00026 #include "nel/misc/random.h"
00027 
00028 namespace NLMISC
00029 {
00030 
00031 //===========================================================================
00032 CRandom::CRandom() : _Seed(1)
00033 {
00034 }
00035 
00036 //===========================================================================
00037 // NB : In fact this random generator has the same behaviour than the VC6 one
00038 sint32 CRandom::rand()
00039 {
00040         return ((_Seed = _Seed * 214013L + 2531011L) >> 16) & RandMax;  
00041 }
00042 
00043 //===========================================================================
00044 void CRandom::srand(sint32 seed)
00045 {
00046         _Seed = seed;
00047 }
00048 
00049 //===========================================================================
00050 float CRandom::frand(float mod)
00051 {
00052         double  r = (double) rand();
00053         r /= (double) RandMax;
00054         return (float)(r * mod);        
00055 }
00056 
00057 }