【原创】开源Math.NET基础数学类库使用(09)相关数论函数使用
来源:互联网 发布:淘宝助理怎么下载订单 编辑:程序博客网 时间:2024/05/01 09:17
开源Math.NET基础数学类库使用总目录:【目录】开源Math.NET基础数学类库使用总目录
前言
数论就是指研究整数性质的一门理论。数论=算术。不过通常算术指数的计算,数论指数的理论。整数的基本元素是素数,所以数论的本质是对素数性质的研究。它是与平面几何同样历史悠久的学科。它大致包括代数数论、解析数论、计算数论等等。
Math.NET也包括了很多数论相关的函数,这些函数都是静态的,可以直接调用,如判断是否奇数,判断幂,平方数,最大公约数等等。同时部分函数已经作为扩展方法,可以直接在对象中使用。
如果本文资源或者显示有问题,请参考 本文原文地址:http://www.cnblogs.com/asxinyu/p/4301097.html
1.数论函数类Euclid
Math.NET包括的数论函数除了一部分大家日常接触到的,奇数,偶数,幂,平方数,最大公约数,最小公倍数等函数,还有一些欧几里得几何的函数,当然也是比较简单的,这些问题的算法有一些比较简单,如最大公约数,最小公倍数等,都有成熟的算法可以使用,对于使用Math.NET的人来说,不必要了解太小,当然对于需要搞清楚原理的人来说,学习Math.NET的架构或者实现,是可以参考的。所以这里先给出Math.NET关于数论函数类Euclid的源代码:
1 /// <summary> 2 /// 整数数论函数 3 /// Integer number theory functions. 4 /// </summary> 5 public static class Euclid 6 { 7 /// <summary> 8 /// Canonical Modulus. The result has the sign of the divisor. 9 /// </summary> 10 public static double Modulus(double dividend, double divisor) 11 { 12 return ((dividend%divisor) + divisor)%divisor; 13 } 14 15 /// <summary> 16 /// Canonical Modulus. The result has the sign of the divisor. 17 /// </summary> 18 public static float Modulus(float dividend, float divisor) 19 { 20 return ((dividend%divisor) + divisor)%divisor; 21 } 22 23 /// <summary> 24 /// Canonical Modulus. The result has the sign of the divisor. 25 /// </summary> 26 public static int Modulus(int dividend, int divisor) 27 { 28 return ((dividend%divisor) + divisor)%divisor; 29 } 30 31 /// <summary> 32 /// Canonical Modulus. The result has the sign of the divisor. 33 /// </summary> 34 public static long Modulus(long dividend, long divisor) 35 { 36 return ((dividend%divisor) + divisor)%divisor; 37 } 38 39 #if !NOSYSNUMERICS 40 /// <summary> 41 /// Canonical Modulus. The result has the sign of the divisor. 42 /// </summary> 43 public static BigInteger Modulus(BigInteger dividend, BigInteger divisor) 44 { 45 return ((dividend%divisor) + divisor)%divisor; 46 } 47 #endif 48 49 /// <summary> 50 /// Remainder (% operator). The result has the sign of the dividend. 51 /// </summary> 52 public static double Remainder(double dividend, double divisor) 53 { 54 return dividend%divisor; 55 } 56 57 /// <summary> 58 /// Remainder (% operator). The result has the sign of the dividend. 59 /// </summary> 60 public static float Remainder(float dividend, float divisor) 61 { 62 return dividend%divisor; 63 } 64 65 /// <summary> 66 /// Remainder (% operator). The result has the sign of the dividend. 67 /// </summary> 68 public static int Remainder(int dividend, int divisor) 69 { 70 return dividend%divisor; 71 } 72 73 /// <summary> 74 /// Remainder (% operator). The result has the sign of the dividend. 75 /// </summary> 76 public static long Remainder(long dividend, long divisor) 77 { 78 return dividend%divisor; 79 } 80 81 #if !NOSYSNUMERICS 82 /// <summary> 83 /// Remainder (% operator). The result has the sign of the dividend. 84 /// </summary> 85 public static BigInteger Remainder(BigInteger dividend, BigInteger divisor) 86 { 87 return dividend%divisor; 88 } 89 #endif 90 91 /// <summary> 92 /// Find out whether the provided 32 bit integer is an even number. 93 /// </summary> 94 /// <param name="number">The number to very whether it's even.</param> 95 /// <returns>True if and only if it is an even number.</returns> 96 public static bool IsEven(this int number) 97 { 98 return (number & 0x1) == 0x0; 99 }100 101 /// <summary>102 /// Find out whether the provided 64 bit integer is an even number.103 /// </summary>104 /// <param name="number">The number to very whether it's even.</param>105 /// <returns>True if and only if it is an even number.</returns>106 public static bool IsEven(this long number)107 {108 return (number & 0x1) == 0x0;109 }110 111 /// <summary>112 /// Find out whether the provided 32 bit integer is an odd number.113 /// </summary>114 /// <param name="number">The number to very whether it's odd.</param>115 /// <returns>True if and only if it is an odd number.</returns>116 public static bool IsOdd(this int number)117 {118 return (number & 0x1) == 0x1;119 }120 121 /// <summary>122 /// Find out whether the provided 64 bit integer is an odd number.123 /// </summary>124 /// <param name="number">The number to very whether it's odd.</param>125 /// <returns>True if and only if it is an odd number.</returns>126 public static bool IsOdd(this long number)127 {128 return (number & 0x1) == 0x1;129 }130 131 /// <summary>132 /// Find out whether the provided 32 bit integer is a perfect power of two.133 /// </summary>134 /// <param name="number">The number to very whether it's a power of two.</param>135 /// <returns>True if and only if it is a power of two.</returns>136 public static bool IsPowerOfTwo(this int number)137 {138 return number > 0 && (number & (number - 1)) == 0x0;139 }140 141 /// <summary>142 /// Find out whether the provided 64 bit integer is a perfect power of two.143 /// </summary>144 /// <param name="number">The number to very whether it's a power of two.</param>145 /// <returns>True if and only if it is a power of two.</returns>146 public static bool IsPowerOfTwo(this long number)147 {148 return number > 0 && (number & (number - 1)) == 0x0;149 }150 151 /// <summary>152 /// Find out whether the provided 32 bit integer is a perfect square, i.e. a square of an integer.153 /// </summary>154 /// <param name="number">The number to very whether it's a perfect square.</param>155 /// <returns>True if and only if it is a perfect square.</returns>156 public static bool IsPerfectSquare(this int number)157 {158 if (number < 0)159 {160 return false;161 }162 163 int lastHexDigit = number & 0xF;164 if (lastHexDigit > 9)165 {166 return false; // return immediately in 6 cases out of 16.167 }168 169 if (lastHexDigit == 0 || lastHexDigit == 1 || lastHexDigit == 4 || lastHexDigit == 9)170 {171 int t = (int)Math.Floor(Math.Sqrt(number) + 0.5);172 return (t * t) == number;173 }174 175 return false;176 }177 178 /// <summary>179 /// Find out whether the provided 64 bit integer is a perfect square, i.e. a square of an integer.180 /// </summary>181 /// <param name="number">The number to very whether it's a perfect square.</param>182 /// <returns>True if and only if it is a perfect square.</returns>183 public static bool IsPerfectSquare(this long number)184 {185 if (number < 0)186 {187 return false;188 }189 190 int lastHexDigit = (int)(number & 0xF);191 if (lastHexDigit > 9)192 {193 return false; // return immediately in 6 cases out of 16.194 }195 196 if (lastHexDigit == 0 || lastHexDigit == 1 || lastHexDigit == 4 || lastHexDigit == 9)197 {198 long t = (long)Math.Floor(Math.Sqrt(number) + 0.5);199 return (t * t) == number;200 }201 202 return false;203 }204 205 /// <summary>206 /// Raises 2 to the provided integer exponent (0 <= exponent < 31).207 /// </summary>208 /// <param name="exponent">The exponent to raise 2 up to.</param>209 /// <returns>2 ^ exponent.</returns>210 /// <exception cref="ArgumentOutOfRangeException"/>211 public static int PowerOfTwo(this int exponent)212 {213 if (exponent < 0 || exponent >= 31)214 {215 throw new ArgumentOutOfRangeException("exponent");216 }217 218 return 1 << exponent;219 }220 221 /// <summary>222 /// Raises 2 to the provided integer exponent (0 <= exponent < 63).223 /// </summary>224 /// <param name="exponent">The exponent to raise 2 up to.</param>225 /// <returns>2 ^ exponent.</returns>226 /// <exception cref="ArgumentOutOfRangeException"/>227 public static long PowerOfTwo(this long exponent)228 {229 if (exponent < 0 || exponent >= 63)230 {231 throw new ArgumentOutOfRangeException("exponent");232 }233 234 return ((long)1) << (int)exponent;235 }236 237 /// <summary>238 /// Find the closest perfect power of two that is larger or equal to the provided239 /// 32 bit integer.240 /// </summary>241 /// <param name="number">The number of which to find the closest upper power of two.</param>242 /// <returns>A power of two.</returns>243 /// <exception cref="ArgumentOutOfRangeException"/>244 public static int CeilingToPowerOfTwo(this int number)245 {246 if (number == Int32.MinValue)247 {248 return 0;249 }250 251 const int maxPowerOfTwo = 0x40000000;252 if (number > maxPowerOfTwo)253 {254 throw new ArgumentOutOfRangeException("number");255 }256 257 number--;258 number |= number >> 1;259 number |= number >> 2;260 number |= number >> 4;261 number |= number >> 8;262 number |= number >> 16;263 return number + 1;264 }265 266 /// <summary>267 /// Find the closest perfect power of two that is larger or equal to the provided268 /// 64 bit integer.269 /// </summary>270 /// <param name="number">The number of which to find the closest upper power of two.</param>271 /// <returns>A power of two.</returns>272 /// <exception cref="ArgumentOutOfRangeException"/>273 public static long CeilingToPowerOfTwo(this long number)274 {275 if (number == Int64.MinValue)276 {277 return 0;278 }279 280 const long maxPowerOfTwo = 0x4000000000000000;281 if (number > maxPowerOfTwo)282 {283 throw new ArgumentOutOfRangeException("number");284 }285 286 number--;287 number |= number >> 1;288 number |= number >> 2;289 number |= number >> 4;290 number |= number >> 8;291 number |= number >> 16;292 number |= number >> 32;293 return number + 1;294 }295 296 /// <summary>297 /// Returns the greatest common divisor (<c>gcd</c>) of two integers using Euclid's algorithm.298 /// </summary>299 /// <param name="a">First Integer: a.</param>300 /// <param name="b">Second Integer: b.</param>301 /// <returns>Greatest common divisor <c>gcd</c>(a,b)</returns>302 public static long GreatestCommonDivisor(long a, long b)303 {304 while (b != 0)305 {306 var remainder = a%b;307 a = b;308 b = remainder;309 }310 311 return Math.Abs(a);312 }313 314 /// <summary>315 /// Returns the greatest common divisor (<c>gcd</c>) of a set of integers using Euclid's316 /// algorithm.317 /// </summary>318 /// <param name="integers">List of Integers.</param>319 /// <returns>Greatest common divisor <c>gcd</c>(list of integers)</returns>320 public static long GreatestCommonDivisor(IList<long> integers)321 {322 if (null == integers)323 {324 throw new ArgumentNullException("integers");325 }326 327 if (integers.Count == 0)328 {329 return 0;330 }331 332 var gcd = Math.Abs(integers[0]);333 334 for (var i = 1; (i < integers.Count) && (gcd > 1); i++)335 {336 gcd = GreatestCommonDivisor(gcd, integers[i]);337 }338 339 return gcd;340 }341 342 /// <summary>343 /// Returns the greatest common divisor (<c>gcd</c>) of a set of integers using Euclid's algorithm.344 /// </summary>345 /// <param name="integers">List of Integers.</param>346 /// <returns>Greatest common divisor <c>gcd</c>(list of integers)</returns>347 public static long GreatestCommonDivisor(params long[] integers)348 {349 return GreatestCommonDivisor((IList<long>)integers);350 }351 352 /// <summary>353 /// Computes the extended greatest common divisor, such that a*x + b*y = <c>gcd</c>(a,b).354 /// </summary>355 /// <param name="a">First Integer: a.</param>356 /// <param name="b">Second Integer: b.</param>357 /// <param name="x">Resulting x, such that a*x + b*y = <c>gcd</c>(a,b).</param>358 /// <param name="y">Resulting y, such that a*x + b*y = <c>gcd</c>(a,b)</param>359 /// <returns>Greatest common divisor <c>gcd</c>(a,b)</returns>360 /// <example>361 /// <code>362 /// long x,y,d;363 /// d = Fn.GreatestCommonDivisor(45,18,out x, out y);364 /// -> d == 9 && x == 1 && y == -2365 /// </code>366 /// The <c>gcd</c> of 45 and 18 is 9: 18 = 2*9, 45 = 5*9. 9 = 1*45 -2*18, therefore x=1 and y=-2.367 /// </example>368 public static long ExtendedGreatestCommonDivisor(long a, long b, out long x, out long y)369 {370 long mp = 1, np = 0, m = 0, n = 1;371 372 while (b != 0)373 {374 long rem;375 #if PORTABLE376 rem = a % b;377 var quot = a / b;378 #else379 long quot = Math.DivRem(a, b, out rem);380 #endif381 a = b;382 b = rem;383 384 var tmp = m;385 m = mp - (quot*m);386 mp = tmp;387 388 tmp = n;389 n = np - (quot*n);390 np = tmp;391 }392 393 if (a >= 0)394 {395 x = mp;396 y = np;397 return a;398 }399 400 x = -mp;401 y = -np;402 return -a;403 }404 405 /// <summary>406 /// Returns the least common multiple (<c>lcm</c>) of two integers using Euclid's algorithm.407 /// </summary>408 /// <param name="a">First Integer: a.</param>409 /// <param name="b">Second Integer: b.</param>410 /// <returns>Least common multiple <c>lcm</c>(a,b)</returns>411 public static long LeastCommonMultiple(long a, long b)412 {413 if ((a == 0) || (b == 0))414 {415 return 0;416 }417 418 return Math.Abs((a/GreatestCommonDivisor(a, b))*b);419 }420 421 /// <summary>422 /// Returns the least common multiple (<c>lcm</c>) of a set of integers using Euclid's algorithm.423 /// </summary>424 /// <param name="integers">List of Integers.</param>425 /// <returns>Least common multiple <c>lcm</c>(list of integers)</returns>426 public static long LeastCommonMultiple(IList<long> integers)427 {428 if (null == integers)429 {430 throw new ArgumentNullException("integers");431 }432 433 if (integers.Count == 0)434 {435 return 1;436 }437 438 var lcm = Math.Abs(integers[0]);439 440 for (var i = 1; i < integers.Count; i++)441 {442 lcm = LeastCommonMultiple(lcm, integers[i]);443 }444 445 return lcm;446 }447 448 /// <summary>449 /// Returns the least common multiple (<c>lcm</c>) of a set of integers using Euclid's algorithm.450 /// </summary>451 /// <param name="integers">List of Integers.</param>452 /// <returns>Least common multiple <c>lcm</c>(list of integers)</returns>453 public static long LeastCommonMultiple(params long[] integers)454 {455 return LeastCommonMultiple((IList<long>)integers);456 }457 458 #if !NOSYSNUMERICS459 /// <summary>460 /// Returns the greatest common divisor (<c>gcd</c>) of two big integers.461 /// </summary>462 /// <param name="a">First Integer: a.</param>463 /// <param name="b">Second Integer: b.</param>464 /// <returns>Greatest common divisor <c>gcd</c>(a,b)</returns>465 public static BigInteger GreatestCommonDivisor(BigInteger a, BigInteger b)466 {467 return BigInteger.GreatestCommonDivisor(a, b);468 }469 470 /// <summary>471 /// Returns the greatest common divisor (<c>gcd</c>) of a set of big integers.472 /// </summary>473 /// <param name="integers">List of Integers.</param>474 /// <returns>Greatest common divisor <c>gcd</c>(list of integers)</returns>475 public static BigInteger GreatestCommonDivisor(IList<BigInteger> integers)476 {477 if (null == integers)478 {479 throw new ArgumentNullException("integers");480 }481 482 if (integers.Count == 0)483 {484 return 0;485 }486 487 var gcd = BigInteger.Abs(integers[0]);488 489 for (int i = 1; (i < integers.Count) && (gcd > BigInteger.One); i++)490 {491 gcd = GreatestCommonDivisor(gcd, integers[i]);492 }493 494 return gcd;495 }496 497 /// <summary>498 /// Returns the greatest common divisor (<c>gcd</c>) of a set of big integers.499 /// </summary>500 /// <param name="integers">List of Integers.</param>501 /// <returns>Greatest common divisor <c>gcd</c>(list of integers)</returns>502 public static BigInteger GreatestCommonDivisor(params BigInteger[] integers)503 {504 return GreatestCommonDivisor((IList<BigInteger>)integers);505 }506 507 /// <summary>508 /// Computes the extended greatest common divisor, such that a*x + b*y = <c>gcd</c>(a,b).509 /// </summary>510 /// <param name="a">First Integer: a.</param>511 /// <param name="b">Second Integer: b.</param>512 /// <param name="x">Resulting x, such that a*x + b*y = <c>gcd</c>(a,b).</param>513 /// <param name="y">Resulting y, such that a*x + b*y = <c>gcd</c>(a,b)</param>514 /// <returns>Greatest common divisor <c>gcd</c>(a,b)</returns>515 /// <example>516 /// <code>517 /// long x,y,d;518 /// d = Fn.GreatestCommonDivisor(45,18,out x, out y);519 /// -> d == 9 && x == 1 && y == -2520 /// </code>521 /// The <c>gcd</c> of 45 and 18 is 9: 18 = 2*9, 45 = 5*9. 9 = 1*45 -2*18, therefore x=1 and y=-2.522 /// </example>523 public static BigInteger ExtendedGreatestCommonDivisor(BigInteger a, BigInteger b, out BigInteger x, out BigInteger y)524 {525 BigInteger mp = BigInteger.One, np = BigInteger.Zero, m = BigInteger.Zero, n = BigInteger.One;526 527 while (!b.IsZero)528 {529 BigInteger rem;530 BigInteger quot = BigInteger.DivRem(a, b, out rem);531 a = b;532 b = rem;533 534 BigInteger tmp = m;535 m = mp - (quot*m);536 mp = tmp;537 538 tmp = n;539 n = np - (quot*n);540 np = tmp;541 }542 543 if (a >= BigInteger.Zero)544 {545 x = mp;546 y = np;547 return a;548 }549 550 x = -mp;551 y = -np;552 return -a;553 }554 555 /// <summary>556 /// Returns the least common multiple (<c>lcm</c>) of two big integers.557 /// </summary>558 /// <param name="a">First Integer: a.</param>559 /// <param name="b">Second Integer: b.</param>560 /// <returns>Least common multiple <c>lcm</c>(a,b)</returns>561 public static BigInteger LeastCommonMultiple(BigInteger a, BigInteger b)562 {563 if (a.IsZero || b.IsZero)564 {565 return BigInteger.Zero;566 }567 568 return BigInteger.Abs((a/BigInteger.GreatestCommonDivisor(a, b))*b);569 }570 571 /// <summary>572 /// Returns the least common multiple (<c>lcm</c>) of a set of big integers.573 /// </summary>574 /// <param name="integers">List of Integers.</param>575 /// <returns>Least common multiple <c>lcm</c>(list of integers)</returns>576 public static BigInteger LeastCommonMultiple(IList<BigInteger> integers)577 {578 if (null == integers)579 {580 throw new ArgumentNullException("integers");581 }582 583 if (integers.Count == 0)584 {585 return 1;586 }587 588 var lcm = BigInteger.Abs(integers[0]);589 590 for (int i = 1; i < integers.Count; i++)591 {592 lcm = LeastCommonMultiple(lcm, integers[i]);593 }594 595 return lcm;596 }597 598 /// <summary>599 /// Returns the least common multiple (<c>lcm</c>) of a set of big integers.600 /// </summary>601 /// <param name="integers">List of Integers.</param>602 /// <returns>Least common multiple <c>lcm</c>(list of integers)</returns>603 public static BigInteger LeastCommonMultiple(params BigInteger[] integers)604 {605 return LeastCommonMultiple((IList<BigInteger>)integers);606 }607 #endif608 }
2.Euclid类的使用例子
上面已经看到源码,也提到了,Euclid作为静态类,其中的很多静态方法都可以直接作为扩展方法使用。这里看看几个简单的例子:
1 // 1. Find out whether the provided number is an even number 2 Console.WriteLine(@"1.判断提供的数字是否是偶数"); 3 Console.WriteLine(@"{0} 是偶数 = {1}. {2} 是偶数 = {3}", 1, Euclid.IsEven(1), 2, 2.IsEven()); 4 Console.WriteLine(); 5 6 // 2. Find out whether the provided number is an odd number 7 Console.WriteLine(@"2.判断提供的数字是否是奇数"); 8 Console.WriteLine(@"{0} 是奇数 = {1}. {2} 是奇数 = {3}", 1, 1.IsOdd(), 2, Euclid.IsOdd(2)); 9 Console.WriteLine();10 11 // 3. Find out whether the provided number is a perfect power of two12 Console.WriteLine(@"2.判断提供的数字是否是2的幂");13 Console.WriteLine(@"{0} 是2的幂 = {1}. {2} 是2的幂 = {3}", 5, 5.IsPowerOfTwo(), 16, Euclid.IsPowerOfTwo(16));14 Console.WriteLine();15 16 // 4. Find the closest perfect power of two that is larger or equal to 9717 Console.WriteLine(@"4.返回大于等于97的最小2的幂整数");18 Console.WriteLine(97.CeilingToPowerOfTwo());19 Console.WriteLine();20 21 // 5. Raise 2 to the 1622 Console.WriteLine(@"5. 2的16次幂");23 Console.WriteLine(16.PowerOfTwo());24 Console.WriteLine();25 26 // 6. Find out whether the number is a perfect square27 Console.WriteLine(@"6. 判断提供的数字是否是平方数");28 Console.WriteLine(@"{0} 是平方数 = {1}. {2} 是平方数 = {3}", 37, 37.IsPerfectSquare(), 81, Euclid.IsPerfectSquare(81));29 Console.WriteLine();30 31 // 7. Compute the greatest common divisor of 32 and 36 32 Console.WriteLine(@"7. 返回32和36的最大公约数");33 Console.WriteLine(Euclid.GreatestCommonDivisor(32, 36));34 Console.WriteLine();35 36 // 8. Compute the greatest common divisor of 492, -984, 123, 24637 Console.WriteLine(@"8. 返回的最大公约数:492、-984、123、246");38 Console.WriteLine(Euclid.GreatestCommonDivisor(492, -984, 123, 246));39 Console.WriteLine();40 41 // 9. Compute the least common multiple of 16 and 1242 Console.WriteLine(@"10. 计算的最小公倍数:16和12");43 Console.WriteLine(Euclid.LeastCommonMultiple(16, 12));44 Console.WriteLine();
结果如下:
1.判断提供的数字是否是偶数1 是偶数 = False. 2 是偶数 = True2.判断提供的数字是否是奇数1 是奇数 = True. 2 是奇数 = False2.判断提供的数字是否是2的幂5 是2的幂 = False. 16 是2的幂 = True4.返回大于等于97的最小2的幂整数1285. 2的16次幂655366. 判断提供的数字是否是平方数37 是平方数 = False. 81 是平方数 = True7. 返回32和36的最大公约数48. 返回的最大公约数:492、-984、123、24612310. 计算的最小公倍数:16和1248
3.资源
源码下载:http://www.cnblogs.com/asxinyu/p/4264638.html
如果本文资源或者显示有问题,请参考 本文原文地址:http://www.cnblogs.com/asxinyu/p/4301097.html
- 【原创】开源Math.NET基础数学类库使用(09)相关数论函数使用
- 【原创】开源Math.NET基础数学类库使用(07)常用的数学物理常数
- 【原创】开源Math.NET基础数学类库使用(01)综合介绍
- 【原创】开源Math.NET基础数学类库使用(02)矩阵向量计算
- 【原创】开源Math.NET基础数学类库使用(03)C#解析Matlab的mat格式
- 【原创】开源Math.NET基础数学类库使用(04)C#解析Matrix Marke数据格式
- 【原创】开源Math.NET基础数学类库使用(05)C#解析Delimited Formats数据格式
- 【原创】开源Math.NET基础数学类库使用(06)直接求解线性方程组
- 【原创】开源Math.NET基础数学类库使用(08)C#进行数值积分
- 【原创】开源Math.NET基础数学类库使用(10)C#进行基本数据统计
- 【原创】开源Math.NET基础数学类库使用(11)C#计算相关系数
- 【原创】开源Math.NET基础数学类库使用(12)C#随机数扩展方法
- 【原创】开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器
- 【原创】开源Math.NET基础数学类库使用(14)C#生成安全的随机数
- 【原创】开源Math.NET基础数学类库使用(15)C#计算矩阵行列式
- 【原创】开源Math.NET基础数学类库使用(16)C#计算矩阵秩
- 【原创】开源Math.NET基础数学类库使用(17)C#计算矩阵条件数
- 开源Math.NET基础数学类库使用(08)C#进行数值积分
- 【原创】开源Math.NET基础数学类库使用(05)C#解析Delimited Formats数据格式
- 【原创】开源Math.NET基础数学类库使用(06)直接求解线性方程组
- 【总目录】本博客博文总目录-实时更新
- 【原创】开源Math.NET基础数学类库使用(07)常用的数学物理常数
- 【原创】开源Math.NET基础数学类库使用(08)C#进行数值积分
- 【原创】开源Math.NET基础数学类库使用(09)相关数论函数使用
- 【原创】开源Math.NET基础数学类库使用(10)C#进行基本数据统计
- 【反传销】传销故事总结—如何尽可能保护自身和家人安全
- 【原创】开源Math.NET基础数学类库使用(11)C#计算相关系数
- 【原创】开源Math.NET基础数学类库使用(12)C#随机数扩展方法
- 【原创】开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器
- 关于推荐系统中的特征工程
- 【原创】开源Math.NET基础数学类库使用(14)C#生成安全的随机数
- 【分享】博客美化(8)让你的博客“推荐按钮”动起来