52 lines
1.7 KiB
C
52 lines
1.7 KiB
C
|
// Copyright (c) 2012-2013 Sundog Software LLC. All rights reserved worldwide.
|
||
|
|
||
|
#ifndef TRITON_RANDOM_NUMBER_GENERATOR_H
|
||
|
#define TRITON_RANDOM_NUMBER_GENERATOR_H
|
||
|
|
||
|
/** \file RandomNumberGenerator.h
|
||
|
\brief An interface for overriding Triton's generation of random numbers.
|
||
|
*/
|
||
|
#include "TritonCommon.h"
|
||
|
|
||
|
#pragma pack(push)
|
||
|
#pragma pack(8)
|
||
|
|
||
|
namespace Triton
|
||
|
{
|
||
|
/** An interface for generating random numbers in Triton. Subclass this interface and pass an
|
||
|
instance to Environment::SetRandomNumberGenerator in order to override Triton's default
|
||
|
usage of rand(). This may be useful for enforcing deterministic behavior across several
|
||
|
channels. */
|
||
|
class RandomNumberGenerator : public MemObject
|
||
|
{
|
||
|
public:
|
||
|
RandomNumberGenerator() {}
|
||
|
virtual ~RandomNumberGenerator() {}
|
||
|
|
||
|
/** Return an evenly distributed random double-precision number within a given range.
|
||
|
\param start The lowest value in the range
|
||
|
\param end The highest value in the range
|
||
|
\return An evenly distributed random number within the range.
|
||
|
*/
|
||
|
virtual double TRITONAPI GetRandomDouble(double start, double end) const = 0;
|
||
|
|
||
|
/** Return an evenly distributed random integer within a given range.
|
||
|
\param start The lowest value in the range
|
||
|
\param end The highest value in the range
|
||
|
\return An evenly distributed random number within the range.
|
||
|
*/
|
||
|
virtual int TRITONAPI GetRandomInt(int start, int end) const = 0;
|
||
|
|
||
|
/** Seeds the random number generator with a given value, to ensure consistent
|
||
|
results.
|
||
|
\param seed A value used to seed the random number generator's sequence
|
||
|
of psuedo-random numbers.
|
||
|
*/
|
||
|
virtual void TRITONAPI SetRandomSeed(unsigned int seed) = 0;
|
||
|
};
|
||
|
}
|
||
|
|
||
|
#pragma pack(pop)
|
||
|
|
||
|
#endif
|