# NewGamePhysics.PhysicalElements.PhysicalRandomNumberGenerator Class Reference

A random number generator using a physical entropy source (if available). Falls transparently back on PRNG on errors. More...

List of all members.

## Public Member Functions
| PhysicalRandomNumberGenerator (EntropySourceType source, string agentName)
| Create a physical random number generator.
int | Next (int minValue, int maxValue)
| Generate random number within a given range [min,max] against the current entropy source.
## Properties
PlayTrulyRandom | PlayTrulyRandom`[get]`
| Gets the current PTR instance.
EntropySourceType | EntropySource`[get, set]`
| Gets the current type of random number entropy.
string | AgentName`[get]`
| Gets the current type of random number entropy.
int | RetrievedEntropyBits`[get, set]`
| Gets or Sets the count of entropy bits that were retrieved.

## Detailed Description

A random number generator using a physical entropy source (if available). Falls transparently back on PRNG on errors.

Definition at line 32 of file PhysicalRandomNumberGenerator.cs.

## Constructor & Destructor Documentation

NewGamePhysics.PhysicalElements.PhysicalRandomNumberGenerator.PhysicalRandomNumberGenerator | ( | EntropySourceType | source,
|  | string | agentName |
| ) |  |  |

Create a physical random number generator.

Parameters:

  | source | The source of the entropy.
  | agentName | The name of the agent using the generator (i.e. the name of the game or webservice access code).

Definition at line 107 of file PhysicalRandomNumberGenerator.cs.

    00110         {
    00111             // Keep state
    00112             this.entropySource = source;
    00113             this.agentName = agentName;
    00114
    00115             // Initialization
    00116             this.Initialize();
    00117         }

## Member Function Documentation

int NewGamePhysics.PhysicalElements.PhysicalRandomNumberGenerator.Next | ( | int | minValue,
|  | int | maxValue |
| ) |  |  |

Generate random number within a given range [min,max] against the current entropy source.

Parameters:

  | minValue | The inclusive minimum value to be generated.
  | maxValue | The inclusive maximum value to be generated. maxValue must be greater or equals than minValue.

Returns:
  A random number within the range.

Definition at line 131 of file PhysicalRandomNumberGenerator.cs.

    00132         {
    00133             if (maxValue < minValue)
    00134             {
    00135                 throw new ArgumentException(
    00136                     "maxValue must be greater or equals than minValue",
    00137                     "maxValue");
    00138             }
    00139
    00140             int result = 0;
    00141
    00142             // Generate based on entropy source type
    00143             switch (this.entropySource)
    00144             {
    00145                 // OS based pseudo generator
    00146                 case EntropySourceType.Pseudo:
    00147                     // Adjust for exclusive range of .Next
    00148                     if (maxValue < int.MaxValue)
    00149                     {
    00150                         maxValue++;
    00151                     }
    00152
    00153                     result = this.prng.Next(minValue, maxValue);
    00154                     this.retrievedEntropyBits += 32;
    00155                     break;
    00156
    00157                 // PTR webservice
    00158                 case EntropySourceType.PlayTrulyRandom:
    00159                     try
    00160                     {
    00161                         int retrievedBits;
    00162                         result = playTrulyRandom.Next(minValue, maxValue, out retrievedBits);
    00163                         this.retrievedEntropyBits += retrievedBits;
    00164                     }
    00165                     catch (Exception)
    00166                     {
    00167                         // On error, fall back on pseudo random number generator
    00168                         this.entropySource = EntropySourceType.Pseudo;
    00169                         result = this.Next(minValue, maxValue);
    00170                     }
    00171
    00172                     break;
    00173             }
    00174
    00175             return result;
    00176         }

## Property Documentation

string NewGamePhysics.PhysicalElements.PhysicalRandomNumberGenerator.AgentName`[get]`

Gets the current type of random number entropy.

Definition at line 88 of file PhysicalRandomNumberGenerator.cs.

EntropySourceType NewGamePhysics.PhysicalElements.PhysicalRandomNumberGenerator.EntropySource`[get, set]`

Gets the current type of random number entropy.

Definition at line 74 of file PhysicalRandomNumberGenerator.cs.

PlayTrulyRandom NewGamePhysics.PhysicalElements.PhysicalRandomNumberGenerator.PlayTrulyRandom`[get]`

Gets the current PTR instance.

Definition at line 66 of file PhysicalRandomNumberGenerator.cs.

int NewGamePhysics.PhysicalElements.PhysicalRandomNumberGenerator.RetrievedEntropyBits`[get, set]`

Gets or Sets the count of entropy bits that were retrieved.

Definition at line 96 of file PhysicalRandomNumberGenerator.cs.

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

- C:/Users/Andreas Schiffler/Desktop/SVN/NewGamePhysics/NewGamePhysics/PhysicalElements/PhysicalRandomNumberGenerator.cs