Random Number Generators in IronPython QuickStart Sample
Illustrates how to use specialized random number generator classes in the Numerics.NET.Statistics.Random namespace in IronPython.
View this sample in: C# Visual Basic F#
```Python import numerics from System import Array from Extreme.Statistics.Random import * from Extreme.Mathematics.LinearAlgebra import * # Illustrates the use of the classes that implement # pseudo-random number generators. # 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: extended = ExtendedRandom() intValues = Array.CreateInstance(int, 100) doubleValues = Array.CreateInstance(float, 100) # The fill method fills an array of integers with random numbers extended.Fill(intValues) print "integer(99) =", intValues[99] # Or, it can generate uniform real values: extended.Fill(doubleValues) print "double(99) =", 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: ranLux1 = RanLux() # We can specify a seed value as well: ranLux2 = RanLux(99) # We can specify the luxury level in the constructor: ranLux3 = RanLux(RanLuxLuxuryLevel.Better) # Finally, we can specify both a seed and the luxury level: ranLux4 = RanLux(99, RanLuxLuxuryLevel.Best) # All methods of System.Random and ExtendedRandom are available: ranLux1.Fill(intValues) ranLux2.Fill(doubleValues) print "Integer from RanLux(Best):", 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: gfsr1 = GfsrGenerator() # A constructor that takes a single integer seed: gfsr2 = 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. gfsr3 = GfsrGenerator(Array[int]([ 99, 17, int.MaxValue ])) # Once again, all standard methods are available. print "Double from GFSR:", gfsr2.NextDouble() # # Mersenne Twister # # The Mersenne Twister is a variation on the GFSR generator and, # not surprisingly, also has three constructors: mersenne1 = MersenneTwister() mersenne2 = MersenneTwister(99) mersenne3 = MersenneTwister(Array[int] ([ 99, 17, int.MaxValue ])) ```