Click or drag to resize

Ran013 Class

Ran013: congruential combined. Returns integer random numbers uniformly distributed within [0,4294967295] (that means [0,2^32-1]. The period is about 2^125 > 4.25*10^37.
Inheritance Hierarchy
SystemObject
  Altaxo.Calc.Probability.OldRandomGenerator
    Altaxo.Calc.Probability.OldRan013

Namespace: Altaxo.Calc.Probability.Old
Assembly: AltaxoCore (in AltaxoCore.dll) Version: 4.8.3179.0 (4.8.3179.0)
Syntax
C#
public class Ran013 : RandomGenerator

The Ran013 type exposes the following members.

Constructors
 NameDescription
Public methodRan013Initializes a new instance of the Ran013 class
Public methodRan013(UInt32)Initializes a new instance of the Ran013 class
Top
Properties
 NameDescription
Public propertyMaximumThe maximum value of the random number which can be returned.
(Inherited from RandomGenerator)
Public propertySeedThe seed value.
(Inherited from RandomGenerator)
Top
Methods
 NameDescription
Public methodEqualsDetermines whether the specified object is equal to the current object.
(Inherited from Object)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object)
Public methodGetHashCodeServes as the default hash function.
(Inherited from Object)
Public methodGetTypeGets the Type of the current instance.
(Inherited from Object)
Public methodLong
(Overrides RandomGeneratorLong)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object.
(Inherited from Object)
Public methodToStringReturns a string that represents the current object.
(Inherited from Object)
Top
Fields
 NameDescription
Protected fieldmax_valUniform long int values within [0...max_val].
(Inherited from RandomGenerator)
Protected fieldseedThe seed of the random generator.
(Inherited from RandomGenerator)
Top
Remarks
C#
   - At least 32 bit long int is required, but works with any larger
word lengths

   - Reference:
     This is algorithm "mzran13" from
     G. Marsaglia and A. Zaman,
     "Some portable very-long-period random number generators",
     Computers in Physics, Vol. 8, No. 1, Jan/Feb 1994.

     In the original implementation the algorithm relies on 32-bit
     arithmetics with implicit modulo 2^32 on overflow. Since the
     the size of unsigned longs may not always be 32 bit the
     modulo 2^32 is coded explicitly using masks.
The performance loss is not very important.

     The original code reads:

         long s;
         if (y > x+c) {
      s = y - (x+c); c = 0;
         } else {
      s = y - (x+c) - 18; c = 1;
         }
         x = y;
         y = z;
         return ((z = s) + (n - 69069 * n + 1013904243));
                              ^
                              Here it contains a misprint
                              Should really be a "=" !
See Also