RandomExtensions.cs 991 B

1234567891011121314151617181920212223242526272829303132
  1. using System;
  2. namespace Masuit.Tools;
  3. public static class RandomExtensions
  4. {
  5. /// <summary>
  6. /// 生成真正的随机数
  7. /// </summary>
  8. /// <param name="r"></param>
  9. /// <param name="maxValue"></param>
  10. /// <returns></returns>
  11. public static int StrictNext(this Random r, int maxValue = int.MaxValue)
  12. {
  13. return new Random(BitConverter.ToInt32(Guid.NewGuid().ToByteArray(), 0)).Next(maxValue);
  14. }
  15. /// <summary>
  16. /// 产生正态分布的随机数
  17. /// </summary>
  18. /// <param name="rand"></param>
  19. /// <param name="mean">均值</param>
  20. /// <param name="stdDev">方差</param>
  21. /// <returns></returns>
  22. public static double NextGauss(this Random rand, double mean, double stdDev)
  23. {
  24. double u1 = 1.0 - rand.NextDouble();
  25. double u2 = 1.0 - rand.NextDouble();
  26. double randStdNormal = Math.Sqrt(-2.0 * Math.Log(u1)) * Math.Sin(2.0 * Math.PI * u2);
  27. return mean + stdDev * randStdNormal;
  28. }
  29. }