OpenShot Library | libopenshot-audio 0.2.0
juce::Random Class Referencefinal

A random number generator. More...

#include <juce_Random.h>

Public Member Functions

 Random (int64 seedValue) noexcept
 Creates a Random object based on a seed value.
 
 Random ()
 Creates a Random object using a random seed value.
 
 ~Random () noexcept
 Destructor.
 
int nextInt () noexcept
 Returns the next random 32 bit integer.
 
int nextInt (int maxValue) noexcept
 Returns the next random number, limited to a given range.
 
int nextInt (Range< int > range) noexcept
 Returns the next random number, limited to a given range.
 
int64 nextInt64 () noexcept
 Returns the next 64-bit random number.
 
float nextFloat () noexcept
 Returns the next random floating-point number.
 
double nextDouble () noexcept
 Returns the next random floating-point number.
 
bool nextBool () noexcept
 Returns the next random boolean value.
 
BigInteger nextLargeNumber (const BigInteger &maximumValue)
 Returns a BigInteger containing a random number.
 
void fillBitsRandomly (void *bufferToFill, size_t sizeInBytes)
 Fills a block of memory with random values.
 
void fillBitsRandomly (BigInteger &arrayToChange, int startBit, int numBits)
 Sets a range of bits in a BigInteger to random values.
 
void setSeed (int64 newSeed) noexcept
 Resets this Random object to a given seed value.
 
int64 getSeed () const noexcept
 Returns the RNG's current seed.
 
void combineSeed (int64 seedValue) noexcept
 Merges this object's seed with another value.
 
void setSeedRandomly ()
 Reseeds this generator using a value generated from various semi-random system properties like the current time, etc.
 

Static Public Member Functions

static RandomgetSystemRandom () noexcept
 The overhead of creating a new Random object is fairly small, but if you want to avoid it, you can call this method to get a global shared Random object.
 

Detailed Description

A random number generator.

You can create a Random object and use it to generate a sequence of random numbers.

Definition at line 38 of file juce_Random.h.

Constructor & Destructor Documentation

◆ Random() [1/2]

juce::Random::Random ( int64  seedValue)
explicitnoexcept

Creates a Random object based on a seed value.

For a given seed value, the subsequent numbers generated by this object will be predictable, so a good idea is to set this value based on the time, e.g.

new Random (Time::currentTimeMillis())

Definition at line 26 of file juce_Random.cpp.

◆ Random() [2/2]

juce::Random::Random ( )

Creates a Random object using a random seed value.

Internally, this calls setSeedRandomly() to randomise the seed.

Definition at line 30 of file juce_Random.cpp.

References setSeedRandomly().

◆ ~Random()

juce::Random::~Random ( )
noexcept

Destructor.

Definition at line 35 of file juce_Random.cpp.

Member Function Documentation

◆ nextInt() [1/3]

int juce::Random::nextInt ( )
noexcept

Returns the next random 32 bit integer.

Returns
a random integer from the full range 0x80000000 to 0x7fffffff

Definition at line 78 of file juce_Random.cpp.

Referenced by fillBitsRandomly(), fillBitsRandomly(), nextBool(), nextDouble(), nextFloat(), nextInt64(), juce::UnitTestRunner::runTests(), and juce::Uuid::Uuid().

◆ nextInt() [2/3]

int juce::Random::nextInt ( int  maxValue)
noexcept

Returns the next random number, limited to a given range.

The maxValue parameter may not be negative, or zero.

Returns
a random integer between 0 (inclusive) and maxValue (exclusive).

Definition at line 85 of file juce_Random.cpp.

◆ nextInt() [3/3]

int juce::Random::nextInt ( Range< int range)
noexcept

Returns the next random number, limited to a given range.

Returns
a random integer between the range start (inclusive) and its end (exclusive).

Definition at line 91 of file juce_Random.cpp.

◆ nextInt64()

int64 juce::Random::nextInt64 ( )
noexcept

Returns the next 64-bit random number.

Returns
a random integer from the full range 0x8000000000000000 to 0x7fffffffffffffff

Definition at line 96 of file juce_Random.cpp.

References nextInt().

◆ nextFloat()

float juce::Random::nextFloat ( )
noexcept

Returns the next random floating-point number.

Returns
a random value in the range 0 (inclusive) to 1.0 (exclusive)

Definition at line 106 of file juce_Random.cpp.

References nextInt().

◆ nextDouble()

double juce::Random::nextDouble ( )
noexcept

Returns the next random floating-point number.

Returns
a random value in the range 0 (inclusive) to 1.0 (exclusive)

Definition at line 111 of file juce_Random.cpp.

References nextInt().

◆ nextBool()

bool juce::Random::nextBool ( )
noexcept

Returns the next random boolean value.

Definition at line 101 of file juce_Random.cpp.

References nextInt().

Referenced by fillBitsRandomly().

◆ nextLargeNumber()

BigInteger juce::Random::nextLargeNumber ( const BigInteger maximumValue)

Returns a BigInteger containing a random number.

Returns
a random value in the range 0 to (maximumValue - 1).

Definition at line 116 of file juce_Random.cpp.

References fillBitsRandomly().

◆ fillBitsRandomly() [1/2]

void juce::Random::fillBitsRandomly ( void bufferToFill,
size_t  sizeInBytes 
)

Fills a block of memory with random values.

Definition at line 129 of file juce_Random.cpp.

References nextInt().

Referenced by nextLargeNumber().

◆ fillBitsRandomly() [2/2]

void juce::Random::fillBitsRandomly ( BigInteger arrayToChange,
int  startBit,
int  numBits 
)

Sets a range of bits in a BigInteger to random values.

Definition at line 143 of file juce_Random.cpp.

References nextBool(), and nextInt().

◆ setSeed()

void juce::Random::setSeed ( int64  newSeed)
noexcept

Resets this Random object to a given seed value.

Definition at line 39 of file juce_Random.cpp.

◆ getSeed()

int64 juce::Random::getSeed ( ) const
inlinenoexcept

Returns the RNG's current seed.

Definition at line 110 of file juce_Random.h.

◆ combineSeed()

void juce::Random::combineSeed ( int64  seedValue)
noexcept

Merges this object's seed with another value.

This sets the seed to be a value created by combining the current seed and this new value.

Definition at line 54 of file juce_Random.cpp.

Referenced by setSeedRandomly().

◆ setSeedRandomly()

void juce::Random::setSeedRandomly ( )

Reseeds this generator using a value generated from various semi-random system properties like the current time, etc.

Because this function convolves the time with the last seed value, calling it repeatedly will increase the randomness of the final result.

Definition at line 59 of file juce_Random.cpp.

References combineSeed(), juce::Time::currentTimeMillis(), juce::Time::getHighResolutionTicks(), juce::Time::getHighResolutionTicksPerSecond(), and juce::Time::getMillisecondCounter().

Referenced by Random().

◆ getSystemRandom()

Random & juce::Random::getSystemRandom ( )
staticnoexcept

The overhead of creating a new Random object is fairly small, but if you want to avoid it, you can call this method to get a global shared Random object.

It's not thread-safe though, so threads should use their own Random object, otherwise you run the risk of your random numbers becoming.. erm.. randomly corrupted..

Definition at line 71 of file juce_Random.cpp.

Referenced by juce::File::createTempFile().


The documentation for this class was generated from the following files: