/// <summary> /// Gets the next 64 random bits. /// </summary> public void Next(ref ValueUnion value) { lock (syncRoot) { source.Next(ref value); } }
/// <summary> /// Gets the next 64 random bits. /// </summary> public void Next(ref ValueUnion value) { ulong s0 = state[p], s1 = state[p = (p + 1) & 15]; s1 ^= s1 << 31; value.UInt64_0 = (state[p] = s1 ^ s0 ^ (s1 >> 11) ^ (s0 >> 30)) * 1181783497276652981; }
/// <summary> /// Gets the next 64 bits. /// </summary> public void Next(ref ValueUnion value) { int n = stream.Read(buffer, 0, sizeof(ulong)); if (n < sizeof(ulong)) { throw new InvalidOperationException("Stream is not a suitable IRandomSource."); } value.UInt64_0 = BitConverter.ToUInt64(buffer, 0); }
public LuaValue(LuaTable value) { if (value != null) { m_type = LuaValueType.Table; m_value = new ValueUnion(value); } else { m_type = LuaValueType.Nil; m_value = new ValueUnion(); } }
public LuaValue(byte[] value) { if (value != null) { m_type = LuaValueType.ByteString; m_value = new ValueUnion(value); } else { m_type = LuaValueType.Nil; m_value = new ValueUnion(); } }
public LuaValue(LuaCoroutine value) { if (value != null) { m_type = LuaValueType.Coroutine; m_value = new ValueUnion(value); } else { m_type = LuaValueType.Nil; m_value = new ValueUnion(); } }
public void UseAfterDispose() { var source = new SHA256RandomSource(); source.Initialize(new byte[] { 1, 2, 3 }); source.Dispose(); var value = new ValueUnion(); source.Next(ref value); source.Next(ref value); source.Next(ref value); source.Next(ref value); }
public LuaValue(LuaCFunction value) { if (value != null) { m_type = LuaValueType.CFunction; m_value = new ValueUnion(value); } else { m_type = LuaValueType.Nil; m_value = new ValueUnion(); } }
public LuaValue(LuaObject value) { if (value != null) { m_type = LuaValueType.Object; m_value = new ValueUnion(value); } else { m_type = LuaValueType.Nil; m_value = new ValueUnion(); } }
/// <summary> /// Gets the next 64 random bits. /// </summary> public void Next(ref ValueUnion value) { if (index == 4) { index = 0; if (sha == null) { throw new ObjectDisposedException(GetType().Name); } state = sha.ComputeHash(state); } value.UInt64_0 = BitConverter.ToUInt64(state, index++ *8); }
public void XorShiftSpeed() { var source = new XorShiftRandomSource(); var random = new Generator(source); random.UInt64(); var value = new ValueUnion(); const int N = 10000000; var sw = Stopwatch.StartNew(); for (int i = 0; i < N; i++) { source.Next(ref value); } Trace.WriteLine(sw.Elapsed.TotalSeconds * 1e9 / N + "ns/64b, " + N * sizeof(ulong) / sw.Elapsed.TotalSeconds / 1e9 + "GB/s"); }
public static void CloneTest(IRandomSource source) { new Generator(source, "CloneTest").UInt64(); var clone = source.Clone(); Assert.IsNotNull(source); var sourceNext = new ValueUnion(); var cloneNext = new ValueUnion(); for (int i = 0; i < 100; i++) { source.Next(ref sourceNext); clone.Next(ref cloneNext); Assert.AreEqual(sourceNext.UInt64_0, cloneNext.UInt64_0); } }
/// <summary> /// Gets the next 64 random bits. /// </summary> public void Next(ref ValueUnion value) { rand.NextBytes(ulongBytes); value.UInt64_0 = BitConverter.ToUInt64(ulongBytes, 0); }
public LuaValue(bool value) { m_type = LuaValueType.Boolean; m_value = new ValueUnion(value); }
public LuaValue(long value) { m_type = LuaValueType.Integer; m_value = new ValueUnion(value); }
public LuaValue(IntPtr value) { m_type = LuaValueType.Userdata; m_value = new ValueUnion(value); }
public LuaValue(double value) { m_type = LuaValueType.Number; m_value = new ValueUnion(value); }