Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index


On 11/29/2012 07:42 AM, Eike Rathke wrote:
Hi,

On Wednesday, 2012-11-28 17:41:14 -0500, Kohei Yoshida wrote:
On Wed, Nov 28, 2012 at 5:07 PM, tino <ttk448@gmail.com> wrote:
Well, re-implementing the existing RAND and RANDBETWEEN with the new
generator is no brainer.

Btw, see the pointers I added to
https://bugs.freedesktop.org/show_bug.cgi?id=33365#c13

Not sure I understand. My suggestion is that boost::mt19937 is the
only underlying generator algorithm (generating int's) which is then
transformed to get RAND() and RANDBETWEEN(i,j).

Isn't boost::mt19937 somewhat overkill for the simple RAND() functions?

Well, again, I can't comment on the algorithm itself, but my reasoning is as follows.

1) Casual users of RAND probably don't really care the specifics of the algorithm used to generate random numbers. They will be just as happy with any algorithm as long as the numbers generated appear to be random enough for their casual use cases.

2) Advanced users of RAND will probably appreciate the new algorithm especially on Windows, since the Windows implementation of rand() is (based on the input we've received so far) quite bad. Advanced users on non-Windows platforms will hopefully be just as happy with the new algorithm as with the glibc one, if not happier.

3) It so happens that the algorithm used in boost is slightly faster than glibc's, which is an added bonus.


Yet both are simple
uniform distributions but the user might need Normal distributed
random variables and then RAND() is of little use. So a function like
RANDNORMAL() which generates N(0,1) (still using boost::mt19937)
random numbers would be a useful addition, wouldn't it?


Ah ok. I think I mis-understood. Bear with me, as I'm not that versed with
random number generation algorithms at the moment.

Well, my position is that, since you know the subject matter very well, and
if you think it's a useful addition then I'm with you.

My only concern is that, we try to be compliant with ODF formula
specification, and I'm not sure how adding a custom function (that only we
understand) would affect that compliance and interoperability with other
ODF generators.

If we wrote such functions as, for example, ORG.LIBREOFFICE.RANDNORMAL
we would be compliant, similar to other functions listed at
http://wiki.documentfoundation.org/Development/ODF_Implementer_Notes#LibreOffice_OpenFormula_extensions

Excellent! So we are at least safe as long as the functions are namespaced. Thanks for the pointer.

Of course interoperability depends on other ODF readers' implementation.

Yup, indeed. But at least this shouldn't limit ourselves from adding useful functions (if they are indeed useful and make sense as cell functions).

Kohei

--
Kohei Yoshida, LibreOffice hacker, Calc

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.