Thread overview
Numpy Random Number Generators
May 01, 2009
dsimcha
May 01, 2009
dsimcha
May 02, 2009
Michel Fortin
May 12, 2009
Fawzi Mohamed
May 01, 2009
I've ported a large portion of the Numpy random number generation library to D.  (I excluded the uniform random number generators because Phobos and Tango already have good implementations of these, and a few distributions because they were obscure and hard to test properly.  I may add the obscure probability distributions later.)

The results appear pretty good  (I added unit tests that make sure the results are sane while I was at it).

The module is licensed under the BSD license.  The code is available at: http://dsource.org/projects/dstats/browser/trunk/random.d

Docs are at http://svn.dsource.org/projects/dstats/docs/random.html although there's not much there.  If you understand the probability distribution you're trying to sample from, it's pretty self-explanatory.  If not, a little bit of ddoc isn't going to help, and Wikipedia is probably a better choice.

May 01, 2009
dsimcha wrote:
> I've ported a large portion of the Numpy random number generation library to
> D.  (I excluded the uniform random number generators because Phobos and Tango
> already have good implementations of these, and a few distributions because
> they were obscure and hard to test properly.  I may add the obscure
> probability distributions later.)
> 
> The results appear pretty good  (I added unit tests that make sure the results
> are sane while I was at it).
> 
> The module is licensed under the BSD license.  The code is available at:
> http://dsource.org/projects/dstats/browser/trunk/random.d
> 
> Docs are at http://svn.dsource.org/projects/dstats/docs/random.html
> although there's not much there.  If you understand the probability
> distribution you're trying to sample from, it's pretty self-explanatory.  If
> not, a little bit of ddoc isn't going to help, and Wikipedia is probably a
> better choice.
> 

These look great. Could I convince you to contribute them to Phobos?

Andrei
May 01, 2009
== Quote from Andrei Alexandrescu (SeeWebsiteForEmail@erdani.org)'s article
> dsimcha wrote:
> > I've ported a large portion of the Numpy random number generation library to D.  (I excluded the uniform random number generators because Phobos and Tango already have good implementations of these, and a few distributions because they were obscure and hard to test properly.  I may add the obscure probability distributions later.)
> >
> > The results appear pretty good  (I added unit tests that make sure the results are sane while I was at it).
> >
> > The module is licensed under the BSD license.  The code is available at: http://dsource.org/projects/dstats/browser/trunk/random.d
> >
> > Docs are at http://svn.dsource.org/projects/dstats/docs/random.html although there's not much there.  If you understand the probability distribution you're trying to sample from, it's pretty self-explanatory.  If not, a little bit of ddoc isn't going to help, and Wikipedia is probably a better choice.
> >
> These look great. Could I convince you to contribute them to Phobos? Andrei

I would certainly be willing to grant permission for these to be included in Phobos.  The only problem is the original code that I ported is BSD licensed, meaning you have to include all the relevant disclaimers.  I place no additional restrictions on it, but for Phobos, the BSD license's requirements might be too restrictive.
May 02, 2009
On 2009-05-01 15:10:50 -0400, dsimcha <dsimcha@yahoo.com> said:

> IDK, I mean, I cut and pasted the code into my D IDE and tweaked it to get it to
> compile and then did some statistical tests to make sure the distributions were
> still reproduced faithfully.  I didn't even change any of the variable names or
> code structure or anything in most cases.  It's a straight translation, not a real
> reimplementation.  I don't see how something like this could possibly *not* be
> considered a derivative work, and I think the people who wrote the original lib
> definitely deserve to be given credit.  It's just that some of the BSD legalese is
> a little bit of a PITA for code that's in a standard lib.

You can always ask for permission at the source. You never know, they may agree to allow you to put your D port under a license that'd work for Phobos. As long as there isn't too many copyright holders, it might work.

-- 
Michel Fortin
michel.fortin@michelf.com
http://michelf.com/

May 12, 2009
On 2009-05-02 12:36:16 +0200, Michel Fortin <michel.fortin@michelf.com> said:

> On 2009-05-01 15:10:50 -0400, dsimcha <dsimcha@yahoo.com> said:
> 
>> IDK, I mean, I cut and pasted the code into my D IDE and tweaked it to get it to
>> compile and then did some statistical tests to make sure the distributions were
>> still reproduced faithfully.  I didn't even change any of the variable names or
>> code structure or anything in most cases.  It's a straight translation, not a real
>> reimplementation.  I don't see how something like this could possibly *not* be
>> considered a derivative work, and I think the people who wrote the original lib
>> definitely deserve to be given credit.  It's just that some of the BSD legalese is
>> a little bit of a PITA for code that's in a standard lib.
> 
> You can always ask for permission at the source. You never know, they may agree to allow you to put your D port under a license that'd work for Phobos. As long as there isn't too many copyright holders, it might work.

otherwise adding the missing distributions (gaussian, exponential & gamma are already there, and done efficiently) to tango.math.random.Random would also be welcomed.

Fawzi