Search Results for

    Show / Hide Table of Contents

    Class FastRandom

    Random number generator service (based on XOR shift technique).

    Inheritance
    object
    IdentifiableObject
    DependencyObject
    AttachableObject
    Service
    FastRandom
    Implements
    IDependencyObject
    Inherited Members
    AttachableObject.AttachableStateChanged
    AttachableObject.IsEnabled
    AttachableObject.State
    AttachableObject.IsLoaded
    AttachableObject.IsAttached
    AttachableObject.IsActivated
    AttachableObject.IsStarted
    AttachableObject.IsDestroyed
    AttachableObject.Destroy()
    DependencyObject.Dependencies
    DependencyObject.OnDependencyRemoved
    IdentifiableObject.Id
    object.Equals(object)
    object.Equals(object, object)
    object.GetHashCode()
    object.GetType()
    object.ReferenceEquals(object, object)
    object.ToString()
    Namespace: Evergine.Framework.Services
    Assembly: Evergine.Framework.dll
    Syntax
    public sealed class FastRandom : Service, IDependencyObject
    Remarks

    Based on FastRandom.cs from colgreen: http://www.codeproject.com/Articles/9187/A-fast-equivalent-for-System-Random.

    Constructors

    FastRandom()

    Initializes a new instance of the FastRandom class.

    Declaration
    public FastRandom()
    Remarks

    The initial seed depends on the time.

    FastRandom(int)

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

    Declaration
    public FastRandom(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

    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.

    Remarks

    MaxValue is not generated in order to remain functionally equivalent to System.Random.Next(). This does slightly eat into some of the performance gain over System.Random, but not much. For better performance see: Call NextInt() for an int over the range 0 to int.MaxValue. Call NextUInt() and cast the result to an int to generate an int over the full Int32 value range including negative values.

    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 upperBound.

    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 lowerBound and less than upperBound.

    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.

    Remarks

    This method is functionally equivalent to System.Random.NextBytes().

    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, both inclusive.

    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.

    Remarks

    This method differs from Next() only in that the range is 0 to int.MaxValue and not 0 to int.MaxValue-1. The slight difference in range means this method is slightly faster than Next() but is not functionally equivalent to System.Random.Next().

    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.

    Implements

    IDependencyObject

    Extension Methods

    ReflectionHelper.GetMemberAssembly(object)
    ReflectionHelper.GetTypeName(object)
    In This Article
    Back to top
    Generated by DocFX