Elisa/Elisa.Common/Utils/RNG.cs

37 lines
938 B
C#

namespace Elisa.Common.Utils;
public static class RNG
{
static readonly Random random = new Random((int)DateTime.Now.Ticks);
public static int Next(int min, int max)
=> random.Next(min, max);
public static int Next(int max)
=> random.Next(max);
public static float NextFloat(float min, float max)
{
double range = (double)max - min;
double sample = random.NextDouble();
double scaled = sample * range + min;
return (float)scaled;
}
public static float NextFloat(float max)
=> NextFloat(0f, max);
public static bool NextBool()
=> random.Next(2) == 0;
public static float NextRoll()
=> NextFloat(100f);
public static T NextFromList<T>(IList<T> list)
=> list[random.Next(list.Count)];
public static U NextFromDict<T, U>(IDictionary<T, U> dict)
=> dict.ElementAt(random.Next(dict.Count)).Value;
}