namespace AIStudio.Tools; /// public sealed class ThreadSafeRandom : Random { private static readonly object LOCK = new(); #region Overrides of Random /// public override int Next() { lock (LOCK) return base.Next(); } /// public override int Next(int maxValue) { lock (LOCK) return base.Next(maxValue); } /// public override int Next(int minValue, int maxValue) { lock (LOCK) return base.Next(minValue, maxValue); } /// public override void NextBytes(byte[] buffer) { lock (LOCK) base.NextBytes(buffer); } /// public override void NextBytes(Span buffer) { lock (LOCK) base.NextBytes(buffer); } /// public override double NextDouble() { lock (LOCK) return base.NextDouble(); } /// public override long NextInt64() { lock (LOCK) return base.NextInt64(); } /// public override long NextInt64(long maxValue) { lock (LOCK) return base.NextInt64(maxValue); } /// public override long NextInt64(long minValue, long maxValue) { lock (LOCK) return base.NextInt64(minValue, maxValue); } /// public override float NextSingle() { lock (LOCK) return base.NextSingle(); } /// protected override double Sample() { lock (LOCK) return base.Sample(); } #endregion }