![]() |
TrinityCore
|
#include <Random.h>
Public Member Functions | |
| Random (uint32 seed=0xF018A4D2, bool threadsafe=true) | |
| virtual | ~Random () |
| virtual void | reset (uint32 seed=0xF018A4D2, bool threadsafe=true) |
| virtual uint32 | bits () |
| virtual int | integer (int min, int max) |
| virtual float | uniform (float low, float high) |
| virtual float | uniform () |
| virtual float | gaussian (float mean, float stdev) |
| virtual void | cosHemi (float &x, float &y, float &z) |
| virtual void | cosSphere (float &x, float &y, float &z) |
| virtual void | cosPowHemi (const float k, float &x, float &y, float &z) |
| virtual void | hemi (float &x, float &y, float &z) |
| virtual void | sphere (float &x, float &y, float &z) |
Static Public Member Functions | |
| static Random & | common () |
Protected Types | |
| enum | { N = 624, M = 397, R = 31, U = 11, S = 7, T = 15, L = 18, A = 0x9908B0DF, B = 0x9D2C5680, C = 0xEFC60000 } |
Protected Member Functions | |
| virtual void | generate () |
| Random (void *) | |
Protected Attributes | |
| Spinlock | lock |
| uint32 * | state |
| int | index |
| bool | m_threadsafe |
Private Member Functions | |
| Random & | operator= (const Random &) |
| Random (const Random &r) | |
Random number generator.
Threadsafe.
Useful for generating consistent random numbers across platforms and when multiple threads are involved.
Uses the Fast Mersenne Twister (FMT-19937) algorithm.
On average, uniform() runs about 2x-3x faster than rand().
[http://www.math.sci.hiroshima-u.ac.jp/]~m-mat/MT/SFMT/index.html
On OS X, Random is about 10x faster than drand48() (which is threadsafe) and 4x faster than rand() (which is not threadsafe).
|
protected |
Constants (important for the algorithm; do not modify)
| Enumerator | |
|---|---|
| N | |
| M | |
| R | |
| U | |
| S | |
| T | |
| L | |
| A | |
| B | |
| C | |
|
protected |
For subclasses. The void* parameter is just to distinguish this from the public constructor.
| threadsafe | Set to false if you know that this random will only be used on a single thread. This eliminates the lock and improves performance on some platforms. |
Here is the call graph for this function:
|
virtual |
|
virtual |
Each bit is random. Subclasses can choose to override just this method and the other methods will all work automatically.
Reimplemented in G3D::PrecomputedRandom.
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
A shared instance for when the performance and features but not consistency of the class are desired. It is slightly (10%) faster to use a distinct instance than to use the common one.
Threadsafe.
|
virtual |
Returns 3D unit vectors distributed according to a cosine distribution about the positive z-axis.
Reimplemented in G3D::PrecomputedRandom.
Here is the call graph for this function:
Here is the caller graph for this function:
|
virtual |
Returns 3D unit vectors distributed according to a cosine power distribution (
) about the z-axis.
Reimplemented in G3D::PrecomputedRandom.
Here is the call graph for this function:
Here is the caller graph for this function:
|
virtual |
Returns 3D unit vectors distributed according to a cosine distribution about the z-axis.
Here is the call graph for this function:
Here is the caller graph for this function:
|
virtual |
Normally distributed reals.
Here is the call graph for this function:
|
protectedvirtual |
Generate the next N ints, and store them for readback later. Called from bits()
Generate the next N ints, and store them for readback later
Here is the call graph for this function:
Here is the caller graph for this function:
|
virtual |
Returns 3D unit vectors uniformly distributed on the hemisphere about the z-axis.
Here is the call graph for this function:
|
virtual |
Uniform random integer on the range [min, max]
Here is the call graph for this function:
Here is the caller graph for this function:
|
virtual |
Returns 3D unit vectors uniformly distributed on the sphere
Reimplemented in G3D::PrecomputedRandom.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinevirtual |
Uniform random float on the range [min, max]
Reimplemented in G3D::PrecomputedRandom.
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlinevirtual |
Uniform random float on the range [0, 1]
Reimplemented in G3D::PrecomputedRandom.
Here is the call graph for this function:
Here is the caller graph for this function:
|
protected |
Index into state
|
protected |
Prevents multiple overlapping calls to generate().
|
protected |
|
protected |
State vector (these are the next N values that will be returned)
1.8.8