Updated Version 5.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.Statistics
Imports Extreme.Statistics.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
            extended.Fill(intValues)
            Console.WriteLine("integer(99) = {0}", intValues(99))

            ' Or, it can generate uniform real values:
            extended.Fill(doubleValues)
            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:
            ranLux1.Fill(intValues)
            ranLux2.Fill(doubleValues)
            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.")
            Console.ReadLine()

        End Sub

    End Module

End Namespace