# Class Random

Random number generator service.

##### Implements

##### Inherited Members

**Namespace**: Evergine.Framework.Services

**Assembly**: Evergine.Framework.dll

##### Syntax

`public sealed class Random : Service, IDependencyObject`

### Constructors

#### Random()

Initializes a new instance of the Random class.

##### Declaration

`public Random()`

##### Remarks

The initial seed depends on the time.

#### Random(int)

Initializes a new instance of the Random class with a given seed.

##### Declaration

`public Random(int seed)`

##### Parameters

Type | Name | Description |
---|---|---|

int | seed | The initial seed. |

### Properties

#### Seed

Gets or sets a value indicating whether the Seed.

##### Declaration

`public int Seed { get; set; }`

##### Property Value

Type | Description |
---|---|

int |

### Methods

#### CreateStrongRandomSeed()

Creates a Strong Random to use as seed... do not use to get as integer random generator cause is slow, use with caution.

##### Declaration

`public int CreateStrongRandomSeed()`

##### Returns

Type | Description |
---|---|

int | A random integer to be used as seed. |

#### InUnitSphere()

Generates a 3D vector inside a radius 1 sphere with uniform distribution.

##### Declaration

`public Vector3 InUnitSphere()`

##### Returns

Type | Description |
---|---|

Vector3 | A Vector3D. |

#### InsideUnitCircle()

Generates a 2D vector inside an unit circle with uniform distribution.

##### Declaration

`public Vector2 InsideUnitCircle()`

##### Returns

Type | Description |
---|---|

Vector2 | A Vector2D. |

#### Next()

Generates a random int over the range 0 to int.MaxValue-1.

##### Declaration

`public int Next()`

##### Returns

Type | Description |
---|---|

int | A 32-bit signed integer greater than or equal to zero and less than MaxValue. |

#### Next(int)

Generates a random int over the range 0 to upperBound-1, and not including upperBound.

##### Declaration

`public int Next(int upperBound)`

##### Parameters

Type | Name | Description |
---|---|---|

int | upperBound | Non inclusive upper bound. |

##### Returns

Type | Description |
---|---|

int | A 32-bit signed integer greater than or equal to zero and less than |

#### Next(int, int)

Generates a random int over the range lowerBound to upperBound-1, and not including upperBound. upperBound must be >= lowerBound. lowerBound may be negative.

##### Declaration

`public int Next(int lowerBound, int upperBound)`

##### Parameters

Type | Name | Description |
---|---|---|

int | lowerBound | The inclusive lower bound. |

int | upperBound | The non inclusive upper bound. |

##### Returns

Type | Description |
---|---|

int | A 32-bit signed integer greater than or equal to |

#### NextBool()

Generates a single random bit.

##### Declaration

`public bool NextBool()`

##### Returns

Type | Description |
---|---|

bool | A boolean. |

##### Remarks

This method's performance is improved by generating 32 bits in one operation and storing them ready for future calls.

#### NextBool(float)

Generates a single random bit with True value weight.

##### Declaration

`public bool NextBool(float trueWeight)`

##### Parameters

Type | Name | Description |
---|---|---|

float | trueWeight | The weight of the TRUE value. |

##### Returns

Type | Description |
---|---|

bool | A boolean. |

#### NextBytes(byte[])

Fills the provided byte array with random bytes.

##### Declaration

`public void NextBytes(byte[] buffer)`

##### Parameters

Type | Name | Description |
---|---|---|

byte[] | buffer | An array of bytes to contain random numbers. |

#### NextDouble()

Generates a random double between 0.0 and 1.0, not including 1.0.

##### Declaration

`public double NextDouble()`

##### Returns

Type | Description |
---|---|

double | A double-precision floating point number greater than or equal to 0.0, and less than 1.0. |

#### NextInt()

Generates a random int over the range 0 to int.MaxValue-1. Same as Next() method.

##### Declaration

`public int NextInt()`

##### Returns

Type | Description |
---|---|

int | A 32-bit signed integer greater than or equal to zero and less or equal than MaxValue -1. |

#### NextRotation()

Generates a single angle in radians [0-2*Pi).

##### Declaration

`public float NextRotation()`

##### Returns

Type | Description |
---|---|

float | An angle. |

#### NextUInt()

Generates a uint. Values returned are over the full range of a uint, uint.MinValue to uint.MaxValue, inclusive.

##### Declaration

`public uint NextUInt()`

##### Returns

Type | Description |
---|---|

uint | A 32-bit signed integer greater than or equal to zero and less or equal than MaxValue. |

##### Remarks

This is the fastest method for generating a single random number because the underlying random number generator algorithm generates 32 random bits that can be cast directly to a uint.

#### OnUnitSphere()

Generates a 3D vector in a radius 1 sphere surface with uniform distribution.

##### Declaration

`public Vector3 OnUnitSphere()`

##### Returns

Type | Description |
---|---|

Vector3 | A Vector3D. |