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); } } }