Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add PRNGs from TestU01 #217

Closed
ph4r05 opened this issue Jan 19, 2017 · 1 comment
Closed

Add PRNGs from TestU01 #217

ph4r05 opened this issue Jan 19, 2017 · 1 comment

Comments

@ph4r05
Copy link
Member

ph4r05 commented Jan 19, 2017

There are few interesting PRNGs (over 40) implemented in the TestU01 test suite. It can be also found on GitHub.

They can be used for testing or benchmarking of the baseline or directly for experiments. Moreover parameters can be tweaked so be obtain stronger or weaker PRNGs.

For example there are:

  • LSFR generators
  • Linear congruential generators, also with instantiations used in the wild (e.g., C stdlib, MS Excel, Maple, VisualBasic, VAX, Fortran, ...),
  • Multiplicative congruential generators
  • Add-with-carry generators
  • Generalized feedback shift register (GFSR)
  • Twisted GFSR
  • Tempered TGFSR (Mersenne Twister family)
  • Inversive generators
  • Cubic congruential generators
  • Xorshift
  • And many others proposed in an academic literature (e.g., by Knuth, Marsaglia, L’Ecuyer, Brent, ...)

Some of they are little bit tricky to seed - one has to pick some parameters while the parameters domains differ and some are better than others (e.g., primes vs. smooth numbers). I personally used GFSR, TGFSR, TTGFSR generators which are easy to seed and it worked well.

We may also add TinyMersenneTwister with only 127 bit state - recommended for small embedded devices.

@Bender250
Copy link
Collaborator

I will show you how to create new stream, and can you implement this to dev?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants