Files
telegram-bot/Core/ThreadSafeRandom.cs
T

43 lines
766 B
C#
Raw Normal View History

2023-01-17 22:42:48 +02:00
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);
}
}
}