@startuml
struct Random {
    + state : uint
    + Random(seed:uint)
    + {static} CreateFromIndex(index:uint) : Random
    + InitState(seed:uint) : void
    + NextBool() : bool
    + NextBool2() : bool2
    + NextBool3() : bool3
    + NextBool4() : bool4
    + NextInt() : int
    + NextInt2() : int2
    + NextInt3() : int3
    + NextInt4() : int4
    + NextInt(max:int) : int
    + NextInt2(max:int2) : int2
    + NextInt3(max:int3) : int3
    + NextInt4(max:int4) : int4
    + NextInt(min:int, max:int) : int
    + NextInt2(min:int2, max:int2) : int2
    + NextInt3(min:int3, max:int3) : int3
    + NextInt4(min:int4, max:int4) : int4
    + NextUInt() : uint
    + NextUInt2() : uint2
    + NextUInt3() : uint3
    + NextUInt4() : uint4
    + NextUInt(max:uint) : uint
    + NextUInt2(max:uint2) : uint2
    + NextUInt3(max:uint3) : uint3
    + NextUInt4(max:uint4) : uint4
    + NextUInt(min:uint, max:uint) : uint
    + NextUInt2(min:uint2, max:uint2) : uint2
    + NextUInt3(min:uint3, max:uint3) : uint3
    + NextUInt4(min:uint4, max:uint4) : uint4
    + NextFloat() : float
    + NextFloat2() : float2
    + NextFloat3() : float3
    + NextFloat4() : float4
    + NextFloat(max:float) : float
    + NextFloat2(max:float2) : float2
    + NextFloat3(max:float3) : float3
    + NextFloat4(max:float4) : float4
    + NextFloat(min:float, max:float) : float
    + NextFloat2(min:float2, max:float2) : float2
    + NextFloat3(min:float3, max:float3) : float3
    + NextFloat4(min:float4, max:float4) : float4
    + NextDouble() : double
    + NextDouble2() : double2
    + NextDouble3() : double3
    + NextDouble4() : double4
    + NextDouble(max:double) : double
    + NextDouble2(max:double2) : double2
    + NextDouble3(max:double3) : double3
    + NextDouble4(max:double4) : double4
    + NextDouble(min:double, max:double) : double
    + NextDouble2(min:double2, max:double2) : double2
    + NextDouble3(min:double3, max:double3) : double3
    + NextDouble4(min:double4, max:double4) : double4
    + NextFloat2Direction() : float2
    + NextDouble2Direction() : double2
    + NextFloat3Direction() : float3
    + NextDouble3Direction() : double3
    + NextQuaternionRotation() : quaternion
}
@enduml
