heal-research / SimSharp

Sim# is a .NET port of SimPy, process-based discrete event simulation framework
MIT License
126 stars 30 forks source link

RNG Improvements #9

Closed abeham closed 5 years ago

abeham commented 5 years ago

There are a couple of issues that should be addressed:

  1. Sim# uses a non-standard method for generating normal distributed random variables, it's also somewhat slower because it produces one normal distributed random by drawing two uniformly distributed numbers. Instead it should use Box-Muller, Marsaglia polar or Ziggurat algorithms.
  2. Generation of log-normals could be simplified by providing an API that allows specifying the desired mean and standard deviation and calculate the transformations
  3. Sim# provides a FastRandom RNG that does not seem to be supported anymore, and the .Net system RNG. The family of permuted congruential generators (PCG) seems a promising alternative.
  4. Sim# can make use of only a single random source. It would be beneficial to have multiple random sources in order to reduce variance.