56 lines
1.4 KiB
C++
56 lines
1.4 KiB
C++
/* -----------------------------------------------------------------------------
|
|
GSFramework
|
|
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
|
----------------------------------------------------------------------------- */
|
|
|
|
|
|
#ifndef __NRAND__
|
|
#define __NRAND__
|
|
|
|
|
|
#include "ntypes.h"
|
|
|
|
|
|
namespace GS {
|
|
namespace Random {
|
|
|
|
#ifndef RAND_MAX
|
|
#define RAND_MAX 0x7fff
|
|
#endif
|
|
|
|
/*!
|
|
@short A random number generator class.
|
|
|
|
@note The maximum precision of this generator is fixed to 16bit integer.
|
|
This means that you cannot get, even with floats, more than 65536
|
|
different values. But this generator has, of course, no query
|
|
limit.
|
|
|
|
@author Emmanuel Julien (ejulien@gsworks.fr)
|
|
*/
|
|
/// Set the starting seed of the random number generator.
|
|
void Seed(uint s);
|
|
/// Return an integer random number in the range [0;r] (default [0;RAND_MAX].
|
|
uint Rand(uint r = RAND_MAX);
|
|
/// Return a float random value in the range [0;r] (default [0;1]).
|
|
float FRand(float r = 1.0f);
|
|
/// Return a float random value un the range [lo, hi] (default [-1, 1]).
|
|
float FRRand(float lo = -1, float hi = 1);
|
|
/*!
|
|
@short Pseudo-unique random number generator.
|
|
|
|
A random number generator that tries to feed a different number
|
|
than what was returned at the previous call.
|
|
This class is a wrapper for Rand().
|
|
|
|
@note The number 'might' still be the same.
|
|
*/
|
|
uint CRand(uint r = RAND_MAX);
|
|
|
|
} // Random
|
|
} // GS
|
|
|
|
|
|
#endif // __NRAND__
|
|
|