37 lines
938 B
C#
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;
|
|
}
|