← All NMath Code Examples
Imports System
Imports CenterSpace.NMath.Core
Namespace CenterSpace.NMath.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