mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2025-02-05 21:29:06 +00:00
88 lines
1.7 KiB
C#
88 lines
1.7 KiB
C#
|
namespace AIStudio.Tools;
|
||
|
|
||
|
/// <inheritdoc />
|
||
|
public sealed class ThreadSafeRandom : Random
|
||
|
{
|
||
|
private static readonly object LOCK = new();
|
||
|
|
||
|
#region Overrides of Random
|
||
|
|
||
|
/// <inheritdoc />
|
||
|
public override int Next()
|
||
|
{
|
||
|
lock (LOCK)
|
||
|
return base.Next();
|
||
|
}
|
||
|
|
||
|
/// <inheritdoc />
|
||
|
public override int Next(int maxValue)
|
||
|
{
|
||
|
lock (LOCK)
|
||
|
return base.Next(maxValue);
|
||
|
}
|
||
|
|
||
|
/// <inheritdoc />
|
||
|
public override int Next(int minValue, int maxValue)
|
||
|
{
|
||
|
lock (LOCK)
|
||
|
return base.Next(minValue, maxValue);
|
||
|
}
|
||
|
|
||
|
/// <inheritdoc />
|
||
|
public override void NextBytes(byte[] buffer)
|
||
|
{
|
||
|
lock (LOCK)
|
||
|
base.NextBytes(buffer);
|
||
|
}
|
||
|
|
||
|
/// <inheritdoc />
|
||
|
public override void NextBytes(Span<byte> buffer)
|
||
|
{
|
||
|
lock (LOCK)
|
||
|
base.NextBytes(buffer);
|
||
|
}
|
||
|
|
||
|
/// <inheritdoc />
|
||
|
public override double NextDouble()
|
||
|
{
|
||
|
lock (LOCK)
|
||
|
return base.NextDouble();
|
||
|
}
|
||
|
|
||
|
/// <inheritdoc />
|
||
|
public override long NextInt64()
|
||
|
{
|
||
|
lock (LOCK)
|
||
|
return base.NextInt64();
|
||
|
}
|
||
|
|
||
|
/// <inheritdoc />
|
||
|
public override long NextInt64(long maxValue)
|
||
|
{
|
||
|
lock (LOCK)
|
||
|
return base.NextInt64(maxValue);
|
||
|
}
|
||
|
|
||
|
/// <inheritdoc />
|
||
|
public override long NextInt64(long minValue, long maxValue)
|
||
|
{
|
||
|
lock (LOCK)
|
||
|
return base.NextInt64(minValue, maxValue);
|
||
|
}
|
||
|
|
||
|
/// <inheritdoc />
|
||
|
public override float NextSingle()
|
||
|
{
|
||
|
lock (LOCK)
|
||
|
return base.NextSingle();
|
||
|
}
|
||
|
|
||
|
/// <inheritdoc />
|
||
|
protected override double Sample()
|
||
|
{
|
||
|
lock (LOCK)
|
||
|
return base.Sample();
|
||
|
}
|
||
|
|
||
|
#endregion
|
||
|
}
|