Skip to content

Rethink distribution functions #85

@rstub

Description

@rstub

At the moment I am using distribution functions from boost.random and add some template specialization to the 64bit RNGs provided here. This works well in principle, but has some disadvantages:

At the moment I see three possibilities:

  1. Vendor in the distribution functions from boost.random and remove the general behavior in favor of code making use of the richer interface of random_64bit_generator. License wise this is fine according to https://www.gnu.org/licenses/license-list.en.html#boost.
  2. Go for a function interface normal(rng, n, mean, sd) etc., similar to the already functional sample() interface.
  3. Extend random_64bit_generator further with methods normal(mean, sd) etc. In this case it would make sense to move the implementation of these methods into separate *.ipp files included after the class declaration. Due to the large tables for the Ziggurat method, this would increase the RNG objects size quite a bit.

All three approaches would allow implementing the Ziggurat variant from https://github.com/cd-mcfarland/fast_prng and MT2001 for Gamma (c.f. #22).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions