Utility.Random.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2021 loyalsoft. All rights reserved.
  4. // Homepage: http://www.game7000.com/
  5. // Feedback: http://www.game7000.com/
  6. //------------------------------------------------------------
  7. using System;
  8. namespace GameFramework
  9. {
  10. public static partial class Utility
  11. {
  12. /// <summary>
  13. /// 随机相关的实用函数。
  14. /// </summary>
  15. public static class Random
  16. {
  17. private static System.Random s_Random = new System.Random((int)DateTime.UtcNow.Ticks);
  18. /// <summary>
  19. /// 设置随机数种子。
  20. /// </summary>
  21. /// <param name="seed">随机数种子。</param>
  22. public static void SetSeed(int seed)
  23. {
  24. s_Random = new System.Random(seed);
  25. }
  26. /// <summary>
  27. /// 返回非负随机数。
  28. /// </summary>
  29. /// <returns>大于等于零且小于 System.Int32.MaxValue 的 32 位带符号整数。</returns>
  30. public static int GetRandom()
  31. {
  32. return s_Random.Next();
  33. }
  34. /// <summary>
  35. /// 返回一个小于所指定最大值的非负随机数。
  36. /// </summary>
  37. /// <param name="maxValue">要生成的随机数的上界(随机数不能取该上界值)。maxValue 必须大于等于零。</param>
  38. /// <returns>大于等于零且小于 maxValue 的 32 位带符号整数,即:返回值的范围通常包括零但不包括 maxValue。不过,如果 maxValue 等于零,则返回 maxValue。</returns>
  39. public static int GetRandom(int maxValue)
  40. {
  41. return s_Random.Next(maxValue);
  42. }
  43. /// <summary>
  44. /// 返回一个指定范围内的随机数。
  45. /// </summary>
  46. /// <param name="minValue">返回的随机数的下界(随机数可取该下界值)。</param>
  47. /// <param name="maxValue">返回的随机数的上界(随机数不能取该上界值)。maxValue 必须大于等于 minValue。</param>
  48. /// <returns>一个大于等于 minValue 且小于 maxValue 的 32 位带符号整数,即:返回的值范围包括 minValue 但不包括 maxValue。如果 minValue 等于 maxValue,则返回 minValue。</returns>
  49. public static int GetRandom(int minValue, int maxValue)
  50. {
  51. return s_Random.Next(minValue, maxValue);
  52. }
  53. /// <summary>
  54. /// 返回一个介于 0.0 和 1.0 之间的随机数。
  55. /// </summary>
  56. /// <returns>大于等于 0.0 并且小于 1.0 的双精度浮点数。</returns>
  57. public static double GetRandomDouble()
  58. {
  59. return s_Random.NextDouble();
  60. }
  61. /// <summary>
  62. /// 用随机数填充指定字节数组的元素。
  63. /// </summary>
  64. /// <param name="buffer">包含随机数的字节数组。</param>
  65. public static void GetRandomBytes(byte[] buffer)
  66. {
  67. s_Random.NextBytes(buffer);
  68. }
  69. }
  70. }
  71. }