モンテカルロ法とは数値計算を確率により行うアルゴリズム。 総数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);
    }
  }
}
Imports System
Imports System.Diagnostics

Class Sample
  Public Shared Sub Main()
    Console.Write("サンプル数? ")

    Dim s As Integer = Integer.Parse(Console.ReadLine())

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

    For i As Integer = 1 To 10
      Dim m As Integer = 0
      Dim rand As New Random()
      Dim sw As Stopwatch = Stopwatch.StartNew()

      For n As Integer = 1 To s
        Dim x As Double = rand.NextDouble()
        DIm y As Double = rand.NextDouble()

        If Math.Sqrt(x * x + y * y) < 1.0 Then m += 1
      Next

      sw.Stop()

      Dim pi As Double = 4.0 * m / s

      Console.WriteLine("{0:D2}回目 ({1:F2}秒): π ≒ {2:F10}", i, sw.Elapsed.TotalSeconds, pi)
    Next
  End Sub
End Class
出力例
サンプル数? 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