diff options
author | Tor Lillqvist <tml@collabora.com> | 2015-01-20 16:24:14 +0200 |
---|---|---|
committer | Tor Lillqvist <tml@collabora.com> | 2015-01-20 18:12:38 +0200 |
commit | bff635be1d45ce721f5e40c64f665a247b995133 (patch) | |
tree | 5f3709f766cd02a1cdc4b1f2306bba975c7c8edd /scaddins | |
parent | f1cf63c223fd7b4771df687ae9fe37faeccdb8fe (diff) |
Make the RAND() and RANDBETWEEN() Calc functions non-random when requested
We don't want such a mode to affect other uses of randomness, though. Thus use
a separate random number generator object for these two functions, and use a
fixed seed for it if the SC_RAND_REPEATABLE environment variable is set.
As RAND() is implemented in sc, and RANDBETWEEN() is implemented in scaddins,
it was a bit hard to figure out where to add the new functions needed, without
having to over-engineer things with UNO. (This functionality is totally
Calc-specific, but neither sc nor scaddins has any public (non-UNO) API.)
Caolan suggested the formula module, which seems like a good enough place to
me.
Change-Id: I4b0cb327392e51a18bce28478af91b0174d6b726
Diffstat (limited to 'scaddins')
-rw-r--r-- | scaddins/Library_analysis.mk | 1 | ||||
-rw-r--r-- | scaddins/source/analysis/analysis.cxx | 4 |
2 files changed, 3 insertions, 2 deletions
diff --git a/scaddins/Library_analysis.mk b/scaddins/Library_analysis.mk index cafce60604a7..4946c5f74107 100644 --- a/scaddins/Library_analysis.mk +++ b/scaddins/Library_analysis.mk @@ -33,6 +33,7 @@ $(eval $(call gb_Library_use_libraries,analysis,\ comphelper \ cppu \ cppuhelper \ + for \ sal \ tl \ i18nlangtag \ diff --git a/scaddins/source/analysis/analysis.cxx b/scaddins/source/analysis/analysis.cxx index 20edfc679949..f7b7fe8f62e0 100644 --- a/scaddins/source/analysis/analysis.cxx +++ b/scaddins/source/analysis/analysis.cxx @@ -22,8 +22,8 @@ #include "bessel.hxx" #include <cppuhelper/factory.hxx> #include <comphelper/processfactory.hxx> -#include <comphelper/random.hxx> #include <cppuhelper/supportsservice.hxx> +#include <formula/random.hxx> #include <osl/diagnose.h> #include <rtl/ustrbuf.hxx> #include <rtl/math.hxx> @@ -703,7 +703,7 @@ double SAL_CALL AnalysisAddIn::getRandbetween( double fMin, double fMax ) throw( if( fMin > fMax ) throw lang::IllegalArgumentException(); - double fRet = floor(comphelper::rng::uniform_real_distribution(fMin, nextafter(fMax+1, -DBL_MAX))); + double fRet = floor(formula::rng::fRandom(fMin, nextafter(fMax+1, -DBL_MAX))); RETURN_FINITE( fRet ); } |