Files
telegram-bot/Core/ThreadSafeRandom.cs
T
2023-01-17 22:48:08 +02:00

43 lines
766 B
C#

using System;
namespace Kruzya.TelegramBot.Core;
public class ThreadSafeRandom
{
private static readonly Random Global = new();
[ThreadStatic] private static Random _local;
public int Next()
{
CheckLocal();
return _local.Next();
}
public int Next(int minValue, int maxValue)
{
CheckLocal();
return _local.Next(minValue, maxValue);
}
public int Next(int maxValue)
{
CheckLocal();
return _local.Next(maxValue);
}
private static void CheckLocal()
{
if (_local == null)
{
int seed;
lock (Global)
{
seed = Global.Next();
}
_local = new Random(seed);
}
}
}