Imports System Imports CenterSpace.NMath.Core Namespace CenterSpace.NMath.Examples.VisualBasic A .NET example in Visual Basic showing how to calculate an approximation for Pi using a Monte Carlo method and the uniform random number generator class RandGenUniform. Imagine a 2 x 2 square with corners at (1,1), (1,-1), (-1,-1) and (-1,1) and a unit circle, centered on the origin, inscribed within it. Generate random points inside the square and let M be the number of points that fall within the unit circle and N be the total number of points generated. As the number N gets large, the quantity M/N should approximate the ratio of the area of the circle to the square, which is pi/4. Hence, we can use the ratio 4*M/N to approximate Pi. Module MonteCarloRNGExample Sub Main() Construct a random number generator that generates random deviates distributed uniformly over the interval [-1,1] Dim Rng As New RandGenUniform(-1.0, 1.0) Well approximate pi to within 5 digits. Dim Tolerance As Double = 0.00001 Dim PiApproximation As Double = 0 Dim total As Integer = 0 Dim NumInCircle As Integer = 0 Dim X, Y As Double Coordinates of the random point. Generate random points until our approximation within the desired tolerance. While (Math.Abs(Math.PI - PiApproximation) > Tolerance) X = Rng.Next() Y = Rng.Next() If (X * X + Y * Y <= 1.0) Then Is the point in the circle? NumInCircle = NumInCircle + 1 End If total = total + 1 PiApproximation = 4.0 * (CType(NumInCircle, Double) / CType(total, Double)) End While Console.WriteLine() Console.Write("Pi calculated to within " + Math.Abs(Math.Log10(Tolerance)).ToString()) Console.WriteLine(" digits with " + total.ToString() + " random points.") Console.WriteLine("Approximated Pi = " + PiApproximation.ToString()) Console.WriteLine() Console.WriteLine("Press Enter Key") Console.Read() End Sub End Module End Namespace← All NMath Code Examples