[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Re rand('state',0)
From: |
David Bateman |
Subject: |
Re: Re rand('state',0) |
Date: |
Fri, 14 Oct 2005 10:13:11 +0200 |
User-agent: |
Mozilla Thunderbird 0.8 (X11/20040923) |
John W. Eaton wrote:
On 13-Oct-2005, David Bateman wrote:
| Do you have octave-forge installed? If not the rand/randn generators in
| octave itself are signifiantly slower and don't support the 'state'
| argument. So I'd suggest you install octave-forge even if you disable
| this line..
2.9.x accepts both "state" and "seed". But it is still the older rand
based on the Fortran ranlib. Should we replace that with the code
from Octave-forge?
jwe
This question has come up before with no conclusion. If we introduce a
new generator then we change the random sequences and some code that
relies on the particular sequence of random values might break. The way
matlab treated this is that is you used rand('seed',val) then the old
generators were used and so those people who wanted a particular
sequence forced the seed and got the old generator being used 'state'
was reserved for the new generator.
The other issue was, should we try and duplicate the random sequence of
matlab. Frankly I don't think that is possible, since we don't know how
they hash the sequence or how they convert the 32-bit values from the MT
to 53-bit values for the doubles. So regenerating their sequence without
a code example will be difficult or impossible, and if we have an
example code we break Mathwork's license... This is why a while back I
took the alternative route of converting the octave-forge generator for
use with matlab, by creating a mex-file interface to it.
See
http://sourceforge.net/mailarchive/message.php?msg_id=11444035
My preference to treat this issue would be to integrate the MT into the
existing liboctave octave_rand class and use the same trick as matlab to
select the old sequence if 'seed' is defined. Forget about generating
the exact same sequence as matlab. The question of what to do with rande
and randp from octave-forge would then need to be considered. I'd
suggest writing interfaces to ranlib sexpo and ignpoi for the
exponential and poisson distributions with the old generators and
include rande and randp in octave's octave_rand class. This would
require a bit of reorganization of the octave-forge code but would be
worth it in terms of backward compatibility...
Regards
David
--
David Bateman address@hidden
Motorola Labs - Paris +33 1 69 35 48 04 (Ph)
Parc Les Algorithmes, Commune de St Aubin +33 1 69 35 77 01 (Fax)
91193 Gif-Sur-Yvette FRANCE
The information contained in this communication has been classified as:
[x] General Business Information
[ ] Motorola Internal Use Only
[ ] Motorola Confidential Proprietary
-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.
Octave's home on the web: http://www.octave.org
How to fund new projects: http://www.octave.org/funding.html
Subscription information: http://www.octave.org/archive.html
-------------------------------------------------------------