NetLogo 6.2.2 - org.nlogo.api.MersenneTwisterFast
Keywords: NetLogo 6.2.2 org.nlogo.api.MersenneTwisterFast

NetLogo6.2.2 < Back
 

# Packages

-  package root
  Definition Classes
    root
-  package org
  Definition Classes
    root
-  package nlogo
  Definition Classes
    org
-  package api

  Provides classes associated with the NetLogo Extensions API and Controlling API.

  Provides classes associated with the NetLogo Extensions API and Controlling API.

  For discussion and sample code, please see the NetLogo User Manual.

  Definition Classes
    nlogo
- APIVersion
- Action
- ActionBroker
- ActionBuffer
- ActionRunner
- Activation
- AddableComponent
- Agent
- AgentException
- AgentFollowingPerspective
- AgentSet
- AgentVariableNumbers
- AgentVariables
- AggregateManagerInterface
- AnonymousCommand
- AnonymousProcedure
- AnonymousReporter
- Approximate
- Argument
- AutoConvertable
- AutoConverter
- BaseValueSet
- CSV
- ClassManager
- Color
- Command
- CommandLogoThunk
- CommandRunnable
- CompilerServices
- ComponentSerialization
- ConfigurableModelLoader
- Constants
- Context
- ControlSet
- Controllable
- DefaultClassManager
- DelegatingMapper
- DoubleRange
- Drawing3D
- DrawingInterface
- DrawingLine3D
- DummyCompilerServices
- DummyEditable
- DummyErrorHandler
- DummyExtensionManager
- DummyLibraryManager
- DummyLogoThunkFactory
- Dump
- Editable
- EditorAreaInterface
- EnumeratedValueSet
- Equality
- Exceptions
- ExtensionException
- ExtensionManager
- FileIO
- FormatterPair
- Graphics2DWrapper
- GraphicsInterface
- HaltSignal
- HexString
- HubNetInterface
- HubNetWorkspaceInterface
- I18NJava
- ImportErrorHandler
- ImporterUser
- JavaLibraryPath
- JobOwner
- LabProtocol
- LibraryInfoDownloader
- LibraryManager
- Link
- Link3D
- LinkStamp3D
- LocalFile
- Logger
- LogoException
- LogoHashObject
- LogoListBuilder
- LogoThunkFactory
- Matrix3D
- MersenneTwisterFast
- MetadataLoadingException
- ModelFormat
- ModelLoader
- ModelReader
- ModelRun
- ModelSection
- ModelSectionJ
- ModelSettings
- ModelType
- ModelTypeJ
- ModelingCommonsInterface
- MultiErrorHandler
- NetLogoAdapter
- NetLogoLegacyDialect
- NetLogoLegacyDialectTokenMapper
- NetLogoListener
- NetLogoThreeDDialect
- Numbers
- Observer
- ObserverOrientation
- Options
- OutputDestination
- OutputDestinationJ
- Patch
- Patch3D
- PeriodicUpdateDelay
- Perspective
- PerspectiveJ
- PlotAction
- PlotInterface
- PlotManagerInterface
- PlotPenInterface
- PlotPointInterface
- PlotState
- PreviewCommands
- PrimitiveManager
- Property
- Protractor
- Protractor3D
- RandomSeedGenerator
- RandomServices
- RefEnumeratedValueSet
- RefValueSet
- Refreshable
- RemoteFile
- RendererInterface
- Reporter
- ReporterLogoThunk
- ReporterRunnable
- ScalaConversions
- SimpleChangeEvent
- SimpleChangeEventPublisher
- SimpleJobOwner
- SingleErrorHandler
- SourceOwner
- SteppedValueSet
- StringUtils
- ThreeDTokenMapper
- Timer
- TokenHolder
- TokenizerInterface
- TrailDrawerInterface
- Turtle
- Turtle3D
- TurtleStamp3D
- TypeNames
- ValueConstraint
- ValueSet
- Vect
- Version
- VersionHistory
- ViewInterface
- ViewSettings
- Workspace
- World
- World3D
- WorldDimensionException
- WorldDimensions3D
- WorldPropertiesInterface
- WorldRenderable
- WorldResizer
- WorldWithWorldRenderable

c

org.nlogo.api

# MersenneTwisterFast 

###

#### final class MersenneTwisterFast extends Random with Serializable with Cloneable

##### MersenneTwister and MersenneTwisterFast

Version 9, based on version MT199937(99/10/29) of the Mersenne Twister algorithm found at The Mersenne Twister Home Page, with the initialization improved using the new 2002/1/26 initialization algorithm By Sean Luke, October 2004.

MersenneTwister is a drop-in subclass replacement for java.util.Random. It is properly synchronized and can be used in a multithreaded environment. On modern VMs such as HotSpot, it is approximately 1/3 slower than java.util.Random.

MersenneTwisterFast is not a subclass of java.util.Random. It has the same public methods as Random does, however, and it is algorithmically identical to MersenneTwister. MersenneTwisterFast has hard-code inlined all of its methods directly, and made all of them final (well, the ones of consequence anyway). Further, these methods are not synchronized, so the same MersenneTwisterFast instance cannot be shared by multiple threads. But all this helps MersenneTwisterFast achieve well over twice the speed of MersenneTwister. java.util.Random is about 1/3 slower than MersenneTwisterFast.

##### About the Mersenne Twister

This is a Java version of the C-program for MT19937: Integer version. The MT19937 algorithm was created by Makoto Matsumoto and Takuji Nishimura, who ask: "When you use this, send an email to: matumoto@math.keio.ac.jp with an appropriate reference to your work". Indicate that this is a translation of their algorithm into Java.

Reference. Makato Matsumoto and Takuji Nishimura, "Mersenne Twister: A 623-Dimensionally Equidistributed Uniform Pseudo-Random Number Generator", ACM Transactions on Modeling and Computer Simulation, Vol. 8, No. 1, January 1998, pp 3--30.

##### About this Version

Changes Since V8: setSeed(int) was only using the first 28 bits of the seed; it should have been 32 bits. For small-number seeds the behavior is identical.

Changes Since V7: A documentation error in MersenneTwisterFast (but not MersenneTwister) stated that nextDouble selects uniformly from the full-open interval [0,1]. It does not. nextDouble's contract is identical across MersenneTwisterFast, MersenneTwister, and java.util.Random, namely, selection in the half-open interval [0,1). That is, 1.0 should not be returned. A similar contract exists in nextFloat.

Changes Since V6: License has changed from LGPL to BSD. New timing information to compare against java.util.Random. Recent versions of HotSpot have helped Random increase in speed to the point where it is faster than MersenneTwister but slower than MersenneTwisterFast (which should be the case, as it's a less complex algorithm but is synchronized).

Changes Since V5: New empty constructor made to work the same as java.util.Random -- namely, it seeds based on the current time in milliseconds.

Changes Since V4: New initialization algorithms. See (see http://www.math.keio.ac.jp/matumoto/MT2002/emt19937ar.html)

The MersenneTwister code is based on standard MT19937 C/C++ code by Takuji Nishimura, with suggestions from Topher Cooper and Marc Rieffel, July 1997. The code was originally translated into Java by Michael Lecuyer, January 1999, and the original code is Copyright (c) 1999 by Michael Lecuyer.

##### Java notes

This implementation implements the bug fixes made in Java 1.2's version of Random, which means it can be used with earlier versions of Java. See the JDK 1.2 java.util.Random documentation for further documentation on the random-number generation contracts made. Additionally, there's an undocumented bug in the JDK java.util.Random.nextBytes() method, which this code fixes.

Just like java.util.Random, this generator accepts a long seed but doesn't use all of it. java.util.Random uses 48 bits. The Mersenne Twister instead uses 32 bits (int size). So it's best if your seed does not exceed the int range.

MersenneTwister can be used reliably on JDK version 1.1.5 or above. Earlier Java versions have serious bugs in java.util.Random; only MersenneTwisterFast (and not MersenneTwister nor java.util.Random) should be used with them.

##### License

Copyright (c) 2003 by Sean Luke.
Portions copyright (c) 1993 by Michael Lecuyer.
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- Neither the name of the copyright owners, their employers, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Annotations
  @strictfp()
Source
  MersenneTwisterFast.java
Version

  8

Linear Supertypes
Cloneable, Random, Serializable, AnyRef, Any
 
Ordering

1. Alphabetic
2. By Inheritance

Inherited

1. MersenneTwisterFast
2. Cloneable
3. Random
4. Serializable
5. AnyRef
6. Any

1. Hide All
2. Show All

Visibility

1. Public
2. All

### Instance Constructors

1.  new MersenneTwisterFast(array: Array[Int])

   Constructor using an array.

2.  new MersenneTwisterFast(seed: Long)

   Constructor using a given seed.

   Constructor using a given seed. Though you pass this seed in as a long, it's best to make sure it's actually an integer.

3.  new MersenneTwisterFast()

### Value Members

1.  final def !=(arg0: Any): Boolean
   Definition Classes
     AnyRef → Any
2.  final def ##(): Int
   Definition Classes
     AnyRef → Any
3.  final def ==(arg0: Any): Boolean
   Definition Classes
     AnyRef → Any
4.  final def asInstanceOf[T0]: T0
   Definition Classes
     Any
5.  def clone(): MersenneTwisterFast

   This method added for use by NetLogo's "with-local-randomness" primitive.

   This method added for use by NetLogo's "with-local-randomness" primitive. It was not in Sean's original code.

   Definition Classes
     MersenneTwisterFast → AnyRef
   Annotations
     @Override()
6.  def doubles(arg0: Double, arg1: Double): DoubleStream
   Definition Classes
     Random
7.  def doubles(arg0: Long, arg1: Double, arg2: Double): DoubleStream
   Definition Classes
     Random
8.  def doubles(): DoubleStream
   Definition Classes
     Random
9.  def doubles(arg0: Long): DoubleStream
   Definition Classes
     Random
10.  final def eq(arg0: AnyRef): Boolean
    Definition Classes
      AnyRef
11.  def equals(arg0: Any): Boolean
    Definition Classes
      AnyRef → Any
12.  def finalize(): Unit
    Attributes
      protected[lang]
    Definition Classes
      AnyRef
    Annotations
      @throws( classOf[java.lang.Throwable] )
13.  final def getClass(): Class[_]
    Definition Classes
      AnyRef → Any
    Annotations
      @native()
14.  def hashCode(): Int
    Definition Classes
      AnyRef → Any
    Annotations
      @native()
15.  def ints(arg0: Int, arg1: Int): IntStream
    Definition Classes
      Random
16.  def ints(arg0: Long, arg1: Int, arg2: Int): IntStream
    Definition Classes
      Random
17.  def ints(): IntStream
    Definition Classes
      Random
18.  def ints(arg0: Long): IntStream
    Definition Classes
      Random
19.  final def isInstanceOf[T0]: Boolean
    Definition Classes
      Any
20.  def load(s: String): Unit

    This method added for use by NetLogo's import-world feature.

    This method added for use by NetLogo's import-world feature. It was not in Sean's original code.

21.  def longs(arg0: Long, arg1: Long): LongStream
    Definition Classes
      Random
22.  def longs(arg0: Long, arg1: Long, arg2: Long): LongStream
    Definition Classes
      Random
23.  def longs(): LongStream
    Definition Classes
      Random
24.  def longs(arg0: Long): LongStream
    Definition Classes
      Random
25.  final def ne(arg0: AnyRef): Boolean
    Definition Classes
      AnyRef
26.  def next(bits: Int): Int
    Attributes
      protected[api]
    Definition Classes
      MersenneTwisterFast → Random
    Annotations
      @Override()
27.  def nextBoolean(probability: Double): Boolean

    This generates a coin flip with a probability `probability` of returning true, else returning false.

    This generates a coin flip with a probability `probability` of returning true, else returning false. `probability` must be between 0.0 and 1.0, inclusive.

28.  def nextBoolean(probability: Float): Boolean

    This generates a coin flip with a probability `probability` of returning true, else returning false.

    This generates a coin flip with a probability `probability` of returning true, else returning false. `probability` must be between 0.0 and 1.0, inclusive. Not as precise a random real event as nextBoolean(double), but twice as fast. To explicitly use this, remember you may need to cast to float first.

29.  def nextBoolean(): Boolean
    Definition Classes
      MersenneTwisterFast → Random
    Annotations
      @Override()
30.  def nextByte(): Byte
31.  def nextBytes(bytes: Array[Byte]): Unit
    Definition Classes
      MersenneTwisterFast → Random
    Annotations
      @Override()
32.  def nextChar(): Char
33.  def nextDouble(): Double

    Returns a random double in the half-open range from [0.0,1.0).

    Returns a random double in the half-open range from [0.0,1.0). Thus 0.0 is a valid result but 1.0 is not.

    Definition Classes
      MersenneTwisterFast → Random
    Annotations
      @Override()
34.  def nextFloat(): Float

    Returns a random float in the half-open range from [0.0f,1.0f).

    Returns a random float in the half-open range from [0.0f,1.0f). Thus 0.0f is a valid result but 1.0f is not.

    Definition Classes
      MersenneTwisterFast → Random
    Annotations
      @Override()
35.  def nextGaussian(): Double
    Definition Classes
      MersenneTwisterFast → Random
    Annotations
      @Override()
36.  def nextInt(n: Int): Int

    Returns an integer drawn uniformly from 0 to n-1.

    Returns an integer drawn uniformly from 0 to n-1. Suffice it to say, n must be > 0, or an IllegalArgumentException is raised.

    Definition Classes
      MersenneTwisterFast → Random
    Annotations
      @Override()
37.  def nextInt(): Int
    Definition Classes
      MersenneTwisterFast → Random
    Annotations
      @Override()
38.  def nextLong(n: Long): Long

    Returns a long drawn uniformly from 0 to n-1.

    Returns a long drawn uniformly from 0 to n-1. Suffice it to say, n must be > 0, or an IllegalArgumentException is raised.

39.  def nextLong(): Long
    Definition Classes
      MersenneTwisterFast → Random
    Annotations
      @Override()
40.  def nextShort(): Short
41.  final def notify(): Unit
    Definition Classes
      AnyRef
    Annotations
      @native()
42.  final def notifyAll(): Unit
    Definition Classes
      AnyRef
    Annotations
      @native()
43.  def save(): String

    This method added for use by NetLogo's export-world feature.

    This method added for use by NetLogo's export-world feature. It was not in Sean's original code.

44.  def setSeed(array: Array[Int]): Unit

    An alternative, more complete, method of seeding the pseudo random number generator.

    An alternative, more complete, method of seeding the pseudo random number generator. array must be an array of 624 ints, and they can be any value as long as they're not *all* zero.

45.  def setSeed(seed: Long): Unit

    Initalize the pseudo random number generator.

    Initalize the pseudo random number generator. Don't pass in a long that's bigger than an int (Mersenne Twister only uses the first 32 bits for its seed).

    Definition Classes
      MersenneTwisterFast → Random
    Annotations
      @Override()
46.  final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
      AnyRef
47.  def toString(): String
    Definition Classes
      AnyRef → Any
48.  final def wait(): Unit
    Definition Classes
      AnyRef
    Annotations
      @throws( ... )
49.  final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
      AnyRef
    Annotations
      @throws( ... )
50.  final def wait(arg0: Long): Unit
    Definition Classes
      AnyRef
    Annotations
      @throws( ... ) @native()

### Inherited from Cloneable

### Inherited from Random

### Inherited from Serializable

### Inherited from AnyRef

### Inherited from Any

### Ungrouped