RandomExtensions.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System;
  2. using Microsoft.Xna.Framework;
  3. namespace MonoGame.Extended
  4. {
  5. public static class RandomExtensions
  6. {
  7. [Obsolete("Use Next(Random, Interval<int>). Range<T> will be removed in 6.0")]
  8. public static int Next(this Random random, Range<int> range)
  9. {
  10. return random.Next(range.Min, range.Max);
  11. }
  12. public static int Next(this Random random, Interval<int> interval)
  13. {
  14. return random.Next(interval.Min, interval.Max);
  15. }
  16. public static float NextSingle(this Random random, float min, float max)
  17. {
  18. return (max - min) * NextSingle(random) + min;
  19. }
  20. public static float NextSingle(this Random random, float max)
  21. {
  22. return max * NextSingle(random);
  23. }
  24. public static float NextSingle(this Random random)
  25. {
  26. return (float)random.NextDouble();
  27. }
  28. [Obsolete("Use Next(Random, Interval<float>). Range<T> will be removed in 6.0")]
  29. public static float NextSingle(this Random random, Range<float> range)
  30. {
  31. return NextSingle(random, range.Min, range.Max);
  32. }
  33. public static float NextSingle(this Random random, Interval<float> interval)
  34. {
  35. return NextSingle(random, interval.Min, interval.Max);
  36. }
  37. public static float NextAngle(this Random random)
  38. {
  39. return NextSingle(random, -MathHelper.Pi, MathHelper.Pi);
  40. }
  41. public static void NextUnitVector(this Random random, out Vector2 vector)
  42. {
  43. var angle = NextAngle(random);
  44. vector = new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle));
  45. }
  46. }
  47. }