# Random Number Generators in Visual Basic QuickStart Sample

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

View this sample in: C# F# IronPython

``````Imports Extreme.Mathematics
Imports Extreme.Mathematics.Random

' Illustrates the use of the classes that implement
' pseudo-random number generators.
Module RandomNumberGenerators

Sub Main()
' The license is verified at runtime. We're using
' a demo license here. For more information, see
' https://numerics.net/trial-key
Extreme.License.Verify("Demo license")

' 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``````