RANDOM() and RANDOM(FALSE) problem



--- Raymond Toy  wrote:

> As I said, the main part of CMUCL's generator is very portable.
> Converting to floating point should be easy.

OK, I have modified the CMUCL MT rng (rand-mt19937.lisp) so
Clisp and GCL are happy with it. 

The up side is that the modified mt19937 is substantially
faster (2 or maybe 3 times) than the naive MT 
(http://www.lisp-p.org/jmt) which we discussed briefly. 

The down side is that it's substantially slower than the
unmodified mt19937. I cut out calls to the CMUCL vm stuff, 
which include a central calculation coded in x86 assembler.
I assumed that's not portable, maybe I'm wrong about that.

The other down side is that the modified version is integer-only.
I think it would be straightforward to restore the floating
point stuff, though.

See: http://maxima.sf.net/wiki/index.php/Modified%20MT%2019937%20rng

> In cl-bench, there is also a portable version of the mrgk3a
> generator.  I think that's pretty well-respected too.  It requires
> fast floating-point though.  One advantage is that the state is
> fairly small, unlike the 600+ words for mt-19937.
> 
> I do know that someone ran cmucl's generator through Marsaglia's
> die-hard tests and the Ising physical model test, and it passed them
> all.  Don't know about mrgk3a.

I haven't looked into that yet, but it sounds interesting.

For what it's worth,
Robert Dodier


		
__________________________________ 
Do you Yahoo!? 
The all-new My Yahoo! - What will yours do?
http://my.yahoo.com