Package org.apache.commons.math3.random

# Class Well44497a

java.lang.Object
org.apache.commons.math3.random.BitsStreamGenerator
org.apache.commons.math3.random.AbstractWell
org.apache.commons.math3.random.Well44497a

All Implemented Interfaces:
  `Serializable`, `RandomGenerator`

public class Well44497a extends AbstractWell
This class implements the WELL44497a pseudo-random number generator from François Panneton, Pierre L'Ecuyer and Makoto Matsumoto.

This generator is described in a paper by François Panneton, Pierre L'Ecuyer and Makoto Matsumoto Improved Long-Period Generators Based on Linear Recurrences Modulo 2 ACM Transactions on Mathematical Software, 32, 1 (2006). The errata for the paper are in wellrng-errata.txt.

Since:
  2.2
See Also:
  - WELL Random number generator
  - Serialized Form

## Field Summary

### Fields inherited from class org.apache.commons.math3.random.AbstractWell

`i1, i2, i3, index, iRm1, iRm2, v`

## Constructor Summary

Constructors
Constructor
Description
`Well44497a()`
Creates a new random number generator.
`Well44497a(int seed)`
Creates a new random number generator using a single int seed.
`Well44497a(int[] seed)`
Creates a new random number generator using an int array seed.
`Well44497a(long seed)`
Creates a new random number generator using a single long seed.

## Method Summary

Modifier and Type
Method
Description
`protected int`
`next(int bits)`
Generate next pseudorandom number.

### Methods inherited from class org.apache.commons.math3.random.AbstractWell

`setSeed, setSeed, setSeed`

### Methods inherited from class org.apache.commons.math3.random.BitsStreamGenerator

`clear, nextBoolean, nextBytes, nextBytes, nextDouble, nextFloat, nextGaussian, nextInt, nextInt, nextLong, nextLong`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### Well44497a

public Well44497a()
Creates a new random number generator.

The instance is initialized using the current time as the seed.

### Well44497a

public Well44497a(int seed)
Creates a new random number generator using a single int seed.

Parameters:
  `seed` - the initial seed (32 bits integer)

### Well44497a

public Well44497a(int[] seed)
Creates a new random number generator using an int array seed.

Parameters:
  `seed` - the initial seed (32 bits integers array), if null the seed of the generator will be related to the current time

### Well44497a

public Well44497a(long seed)
Creates a new random number generator using a single long seed.

Parameters:
  `seed` - the initial seed (64 bits integer)

## Method Details

### next

protected int next(int bits)
Generate next pseudorandom number.

This method is the core generation algorithm. It is used by all the public generation methods for the various primitive types `BitsStreamGenerator.nextBoolean()`, `BitsStreamGenerator.nextBytes(byte[])`, `BitsStreamGenerator.nextDouble()`, `BitsStreamGenerator.nextFloat()`, `BitsStreamGenerator.nextGaussian()`, `BitsStreamGenerator.nextInt()`, `BitsStreamGenerator.next(int)` and `BitsStreamGenerator.nextLong()`.

Specified by:
  `next` in class `AbstractWell`
Parameters:
  `bits` - number of random bits to produce
Returns:
  random bits generated