<p dir="ltr">Well said,  a lot of the tools that depend on a good quality RNG have migrated to tf random and friends.  So a thoughtful time scale is very much the way to go </p>

<br><div class="gmail_quote">On Mon, Apr 6, 2015, 4:50 PM Edward Kmett <<a href="mailto:ekmett@gmail.com" target="_blank">ekmett@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">If we're going to switch out algorithms completely then a first digit major version bump seems entirely warranted.<div><br></div><div>Pulling in tf-random's code entirely is definitely one way to move forward, and it has the benefit of being a relatively simple migration.</div><div><br></div><div>As for tf-random vs. trying out a port of Guy Steele's work to Haskell. </div><div><br></div><div>That is more a question of time and available engineering effort. </div><div><br></div><div>Do we take the short term win or look to see how much further performance we could eke out by going down Guy's path?</div><div><br></div><div>Given that tf-random is already there and working, I'd be inclined to take the longer path forward.</div><div><br></div><div>-Edward</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote"></div></div><div class="gmail_extra"><div class="gmail_quote">On Sat, Apr 4, 2015 at 1:57 PM, Dominic Steinitz <span dir="ltr"><<a href="mailto:dominic@steinitz.org" target="_blank">dominic@steinitz.org</a>></span> wrote:<br></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Hello All,<div><br></div><div>Having skimmed the literature, run some tests and benchmarks:</div><div><br></div><div><ul><li>The current System.Random is broken: <a href="https://github.com/haskell/random/issues/25#issuecomment-87423142" target="_blank">https://github.com/haskell/<u></u>random/issues/25#issuecomment-<u></u>87423142</a>. Furthermore, this is recorded in at least two published papers: <a href="http://dl.acm.org/citation.cfm?id=2660195" target="_blank">http://dl.acm.org/<u></u>citation.cfm?id=2660195</a> and <a href="http://publications.lib.chalmers.se/records/fulltext/183348/local_183348.pdf" target="_blank">http://publications.lib.<u></u>chalmers.se/records/fulltext/<u></u>183348/local_183348.pdf</a>.</li><li>The tf-random package does not have this breakage and is based on good theoretical foundations.</li><li>In my tests tf-random performs better than System.Random.</li></ul></div><div><br></div><div>As a result of which, I am very much inclined to suggest we replace the code in System.Random with tf-random. Before doing any more work on this, I’d like to understand what the next steps should be.</div><div><br></div><div><ul><li>How much review should be carried out? I have no reason to doubt the implementors have done a great job but should someone (who?) review the code more formally. If so what would the process / tools be?</li><li>Tests in packages / applications may now fail as the (pseudo) random numbers will be different with this change. What should we do here? Alert folks (who and how?) that the may have to rebase their tests? Tell folks that 1.1 is deprecated and they should move to 2.0 (I think it’s right to indicate this is a completely new version)?</li><li>Are there any other steps?</li></ul><div><br></div></div><div>FYI: I did look at Guy Steele et al. but I don’t believe there is currently a Haskell implementation of it, probably ruling it out as possible solution in the medium term.</div><span><font color="#888888"><div><br><div>
<div>Dominic Steinitz</div><div><a href="mailto:dominic@steinitz.org" target="_blank">dominic@steinitz.org</a></div><div><a href="http://idontgetoutmuch.wordpress.com" target="_blank">http://idontgetoutmuch.<u></u>wordpress.com</a></div>

</div>
<br></div></font></span></div><br></blockquote></div></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">______________________________<u></u>_________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" target="_blank">http://mail.haskell.org/cgi-<u></u>bin/mailman/listinfo/libraries</a><br>
<br></blockquote></div><br></div>
______________________________<u></u><u></u>_________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" target="_blank">http://mail.haskell.org/cgi-<u></u>bi<u></u>n/mailman/listinfo/libraries</a><br>
</blockquote></div>