Ver código fonte

增加产生正态分布随机数

懒得勤快 7 anos atrás
pai
commit
665688e31c

+ 1 - 1
Masuit.Tools.Core/Masuit.Tools.Core.csproj

@@ -2,7 +2,7 @@
 
   <PropertyGroup>
     <TargetFramework>netcoreapp2.0</TargetFramework>
-    <Version>1.9.1.3</Version>
+    <Version>1.9.1.4</Version>
     <Authors>懒得勤快</Authors>
     <Company>masuit.com</Company>
     <Description>包含一些常用的操作类,大都是静态类,加密解密,反射操作,硬件信息,字符串扩展方法,日期时间扩展操作,大文件拷贝,图像裁剪,html处理,验证码、NoSql等常用封装。

+ 15 - 0
Masuit.Tools.Core/Win32/WindowsCommand.cs

@@ -24,6 +24,21 @@ namespace Masuit.Tools.Win32
             return new Random(BitConverter.ToInt32(b, 0)).Next(seed);
         }
 
+        /// <summary>
+        /// 产生正态分布的随机数
+        /// </summary>
+        /// <param name="rand"></param>
+        /// <param name="mean">均值</param>
+        /// <param name="stdDev">方差</param>
+        /// <returns></returns>
+        public static double NextGauss(this Random rand, double mean, double stdDev)
+        {
+            double u1 = 1.0 - rand.NextDouble();
+            double u2 = 1.0 - rand.NextDouble();
+            double randStdNormal = Math.Sqrt(-2.0 * Math.Log(u1)) * Math.Sin(2.0 * Math.PI * u2);
+            return mean + stdDev * randStdNormal;
+        }
+
         /// <summary>
         /// 执行一个控制台程序,并获取在控制台返回的数据
         /// </summary>

+ 15 - 0
Masuit.Tools/Win32/WindowsCommand.cs

@@ -24,6 +24,21 @@ namespace Masuit.Tools.Win32
             return new Random(BitConverter.ToInt32(b, 0)).Next(seed);
         }
 
+        /// <summary>
+        /// 产生正态分布的随机数
+        /// </summary>
+        /// <param name="rand"></param>
+        /// <param name="mean">均值</param>
+        /// <param name="stdDev">方差</param>
+        /// <returns></returns>
+        public static double NextGauss(this Random rand, double mean, double stdDev)
+        {
+            double u1 = 1.0 - rand.NextDouble();
+            double u2 = 1.0 - rand.NextDouble();
+            double randStdNormal = Math.Sqrt(-2.0 * Math.Log(u1)) * Math.Sin(2.0 * Math.PI * u2);
+            return mean + stdDev * randStdNormal;
+        }
+
         /// <summary>
         /// 执行一个控制台程序,并获取在控制台返回的数据
         /// </summary>