New Version 6.0!

Try it for free with our fully functional 60-day trial version.

Download now!

QuickStart Samples

Random Number Generators QuickStart Sample (Visual Basic)

Illustrates how to use specialized random number generator classes in the Extreme.Statistics.Random namespace in Visual Basic.

C# code F# code IronPython code Back to QuickStart Samples

Imports Extreme.Mathematics
Imports Extreme.Mathematics.Random

Namespace Extreme.Numerics.QuickStart.VB
    ' Illustrates the use of the classes that implement
    ' pseudo-random number generators.
    Module RandomNumberGenerators

        Sub Main()
            ' This QuickStart Sample gives an overview of the pseudo-random
            ' number generators that provide an alternative for the
            ' System.Random class..

            ' ExtendedRandom class

            ' The ExtendedRandom class simply extends the functionality
            ' of the System.Random class:
            Dim extended As ExtendedRandom = New ExtendedRandom
            Dim intValues As Integer() = New Integer(100) {}
            Dim doubleValues As Double() = New Double(100) {}

            ' The fill method fills an array of integers with random numbers
            Console.WriteLine("integer(99) = {0}", intValues(99))

            ' Or, it can generate uniform real values:
            Console.WriteLine("double(99) = {0}", doubleValues(99))

            ' All random number generators can also produce variates 
            ' from any user-specified probability distribution.
            ' The NonUniformRandomNumbers sample illustrates 
            ' how to do this.

            ' RANLUX Generators

            ' The RANLUX generators are available with three different 
            ' 'luxury levels.' Each level produces random numbers of 
            ' increasing quality at a performance cost.
            ' There are four constructors. The first constructor uses the
            ' default seed and the default (lowest) luxury level:
            Dim ranLux1 As RanLux = New RanLux

            ' We can specify a seed value as well:
            Dim ranLux2 As RanLux = New RanLux(99)

            ' We can specify the luxury level in the constructor:
            Dim ranLux3 As RanLux = New RanLux(RanLuxLuxuryLevel.Better)

            ' Finally, we can specify both a seed and the luxury level:
            Dim ranLux4 As RanLux = New RanLux(99, RanLuxLuxuryLevel.Best)

            ' All methods of System.Random and ExtendedRandom are available:
            Console.WriteLine("Integer from RanLux(Best): {0}", ranLux3.Next(100))

            ' Generalized Feedback Shift Register Generator

            ' This generator is implemented by the GfsrGenerator class.
            ' It has three constructors. A default constructor that uses
            ' a default seed value:
            Dim gfsr1 As GfsrGenerator = New GfsrGenerator

            ' A constructor that takes a single integer seed:
            Dim gfsr2 As GfsrGenerator = New GfsrGenerator(99)

            ' And a constructor that takes an array of integers
            ' as its seed. The maximum size of this seed array
            ' is 2^14-1 = 16383.
            Dim gfsr3 As GfsrGenerator = New GfsrGenerator(New Integer() {99, 17, Integer.MaxValue})

            ' Once again, all standard methods are available.
            Console.WriteLine("Double from GFSR: {0}", gfsr2.NextDouble())

            ' Mersenne Twister

            ' The Mersenne Twister is a variation on the GFSR generator and,
            ' not surprisingly, also has three constructors:
            Dim mersenne1 As MersenneTwister = New MersenneTwister
            Dim mersenne2 As MersenneTwister = New MersenneTwister(99)
            Dim mersenne3 As MersenneTwister = New MersenneTwister(New Integer() {99, 17, Integer.MaxValue})

            Console.Write("Press any key to exit.")

        End Sub

    End Module

End Namespace