ï»¿Imports System Imports CenterSpace.NMath.Core Namespace CenterSpace.NMath.Core.Examples.VisualBasic ' A .NET example in Visual Basic showing how to generate random numbers from a stream. Module VectorizedRNGExample Sub Main() ' Unlike scalar-type generators whose output is a successive random number, vector ' generators produce a vector of n successive random numbers from a given ' distribution. Vector type random number generators will generally perform ' better than scalar ones because overhead expense of a function call ' is comparable to the total time required for computation. ' A stream is constructed from an optional seed, and an optional enumerated value specifying which ' algorithm to use for generating random numbers uniformly distributed in the interval (0, 1). Dim Seed As Integer = &H345 Dim Stream As New RandomNumberStream(Seed, RandomNumberStream.BasicRandGenType.MersenneTwister) ' NMath provides distribution modules for many continuous and discrete distributions, each with ' their own distribution parameters. Dim mean As Double = 1.0 Dim Sigma As Double = 1.0 Dim Dist As New DoubleRandomGaussianDistribution(mean, Sigma) ' You can use a stream and distribution to fill an array. Dim N As Integer = 100 Dim Start As Integer = 0 Dim A(N) As Double Dist.Fill(Stream, A, Start, N) ' Or to fill a new vector or matrix. Stream.Reset(Seed) Dim V As New DoubleVector(N, Stream, Dist) Console.WriteLine() ' Display a histogram. Dim numbins As Integer = 10 Dim Hist As New Histogram(numbins, V) Console.WriteLine(Hist) ' If you want the performance of a vectorized random number generator, but still need to access the ' random deviates sequentially, NMath provides Module RandomNumbers, which uses a stream to ' buffer the random numbers internally. Dim BufferSize As Integer = 100 Dim Rnd As New RandomNumbers(Of Double, DoubleRandomGaussianDistribution)(Seed, Dist, BufferSize) For I = 0 To 9 Console.WriteLine("Next() = {0}", CType(Rnd.Next(), Double)) Next Console.WriteLine() Console.WriteLine("Press Enter Key") Console.Read() End Sub End Module End Namespace← All NMath Code Examples