Skip to content

RFC: add support for generating pseudorandom numbers using MT19937 #202

@kgryte

Description

@kgryte

Checklist

Please ensure the following tasks are completed before submitting a feature request.

  • Read and understood the Code of Conduct.
  • Searched for existing issues and pull requests.
  • The issue name begins with RFC:.

Description

Description of the feature request.

This RFC proposes implementing the 32-bit Mersenne twister pseudorandom number generator (PRNG). Should be similar in its API to @stdlib/random/base/minstd.

Package: @stdlib/random/base/mt19937
Alias: mt19937

Related Issues

Does this feature request have any related issues?

No.

Questions

Any questions for reviewers?

No.

Other

Any other information relevant to this feature request? This may include screenshots, references, sample output, and/or implementation notes.

  • Original C implementation
  • Python
  • Boost: not a "good" reference implementation for the purposes of this package, but included here as an additional reference point.
  • GSL (NOTE: due to licensing, cannot be used as a reference implementation, but included here as provides a historical window into prior seeding procedures)
  • "Conversion of Mersenne Twister to double-precision floating-point numbers": paper on the merits of MT19937 algorithm of generating 53 bits of "randomness". Takeaway: not great, but, for the most part, acceptable. Additionally, as this algorithm is common in the wild, we should follow suit to preserve reproducibility.

Metadata

Metadata

Assignees

No one assigned

    Labels

    FeatureIssue or pull request for adding a new feature.Help WantedExtra attention is needed.MathIssue or pull request specific to math functionality.RFCRequest for comments. Feature requests and proposed changes.difficulty: 3Likely to be challenging but manageable.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions