New Version 8.1!

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

Get from Nuget

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