モンテカルロ法とは数値計算を確率により行うアルゴリズム。 総数Nの点をランダムに打ち、その内半径1の円の領域内に入った点の数Mとの比からπを算出する。 この例では簡略化のため、総数nの点のうち、半径が1の円の1/4の扇型に入った点の数をmとし、π=4*m/nとして求める。

using System;
using System.Diagnostics;

class Sample {
  static void Main() {
    Console.Write("サンプル数? ");

    var s = int.Parse(Console.ReadLine());

    Console.WriteLine("π = {0}", Math.PI);

    for (var i = 0; i < 10; i++) {
      var m = 0;
      var rand = new Random();
      var sw = Stopwatch.StartNew();

      for (var n = 0; n < s; n++) {
        var x = rand.NextDouble();
        var y = rand.NextDouble();

        if (Math.Sqrt(x * x + y * y) < 1.0)
          m++;
      }

      sw.Stop();

      var pi = 4.0 * m / s;

      Console.WriteLine("{0:D2}回目 ({1:F2}秒): π ≒ {2:F10}", i, sw.Elapsed.TotalSeconds, pi);
    }
  }
}
出力例
サンプル数? 1000000
π = 3.14159265358979
00回目 (0.08秒): π ≒ 3.1409200000
01回目 (0.08秒): π ≒ 3.1414600000
02回目 (0.08秒): π ≒ 3.1442400000
03回目 (0.08秒): π ≒ 3.1406640000
04回目 (0.07秒): π ≒ 3.1401520000
05回目 (0.08秒): π ≒ 3.1385680000
06回目 (0.08秒): π ≒ 3.1404080000
07回目 (0.07秒): π ≒ 3.1380320000
08回目 (0.07秒): π ≒ 3.1419400000
09回目 (0.07秒): π ≒ 3.1428960000

サンプル数? 100000000
π = 3.14159265358979
00回目 (6.42秒): π ≒ 3.1413966000
01回目 (6.41秒): π ≒ 3.1416413200
02回目 (6.39秒): π ≒ 3.1416714800
03回目 (6.40秒): π ≒ 3.1415544000
04回目 (6.79秒): π ≒ 3.1415177200
05回目 (6.50秒): π ≒ 3.1415052800
06回目 (6.36秒): π ≒ 3.1417421200
07回目 (6.34秒): π ≒ 3.1414884400
08回目 (6.33秒): π ≒ 3.1415430800
09回目 (6.18秒): π ≒ 3.1420759200

サンプル数? 1000000000
π = 3.14159265358979
00回目 (62.45秒): π ≒ 3.1416370760
01回目 (63.28秒): π ≒ 3.1415688320
02回目 (69.53秒): π ≒ 3.1416274120
03回目 (63.40秒): π ≒ 3.1415608600
04回目 (63.52秒): π ≒ 3.1416296080
05回目 (65.45秒): π ≒ 3.1415655560
06回目 (67.72秒): π ≒ 3.1415810680
07回目 (68.42秒): π ≒ 3.1416201240
08回目 (63.22秒): π ≒ 3.1415901560
09回目 (64.61秒): π ≒ 3.1415952080