Random Number Update
Oleg Grenrus
oleg.grenrus at iki.fi
Tue Jan 24 13:53:25 UTC 2017
`random` package provides `RandomGen` (used by tf-random, MonadRandom)
and `Random` (instances of which are in some of [1] for sure) classes.
(tf-random defines own version of those /also/)
Where they should live? I'd propose having module
`System.Random.Classes` in `random` (maybe more like ones in
`tf-random`, though I don't like RandomGen of either one) even we
deprecate the generator itself.
- Oleg
On 24.01.2017 15:35, Dominic Steinitz wrote:
> I wanted to give an update on the status of random numbers in Haskell.
>
> 1. It is well known that the random number generator package
> https://hackage.haskell.org/package/random gives unexpected
> results.
> 2. Most people do *not* use it. I believe
> https://hackage.haskell.org/package/mwc-random is a popular choice
> but developers are free to use e.g. Mersenne Twister, PCG
> (Permuted Congruential Generator), TF (ThreeFish) and many others.
> 3. Approximately 2 years, I made a proposal to replace the algorithm
> within random (https://hackage.haskell.org/package/random) with
> that used by tf-random
> (https://hackage.haskell.org/package/tf-random) which is used by
> QuickCheck. In summary, the response to this was that someone
> should do more research with the result that nothing happened.
> 4. In the meantime, random
> (https://hackage.haskell.org/package/random) is *no longer* a core
> library. It's just a library with the same status as
> e.g. mwc-random. However, it has one difference: it uses the name
> for its module: "System.Random". Other RNGs use
> "System.Random.MWC", "System.Random.PCG", "System.Random.Mersenne"
> etc.
>
> As a maintainer of random
> (https://hackage.haskell.org/package/random), my proposal now is to
> deprecate all of it.
>
> I am not clear what the policy is on namespace usage. Could every RNG
> use the module name "System.Random"? Or is this somehow reserved? If
> the latter then I propose that *nothing* uses this name and that all
> RNGs should add a suffix indicating which algorithm they use.
>
> I note that the Haskell Platform contains tf-random so users of this
> will still be able to generate (better) random numbers.
>
> If someone comes along in the future, as I hope they do, and
> implements e.g. Guy Steele's splitmix algorithm then this can occupy
> the name "System.Random.Splitmix" and have the package name
> "random-splitmix".
>
> The advantages of doing this are:
>
> 1. Neophyte (and experienced) Haskellers do not accidentally use an
> RNG which gives unexpected results.
> 2. No-one will any longer be able to write blogs or papers about this
> embarrassing aspect of Haskell.
>
> I believe the co-maintainer of random
> (https://hackage.haskell.org/package/random), Carter Schonwald, has a
> different view on this matter but it is best he speaks for himself
> rather than me imperfectly trying to reflect his thinking.
>
> Dominic Steinitz
> dominic at steinitz.org
> http://idontgetoutmuch.wordpress.com
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20170124/b202fe24/attachment.sig>
More information about the Libraries
mailing list