summaryrefslogtreecommitdiff
path: root/scaddins
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2015-01-20 16:24:14 +0200
committerTor Lillqvist <tml@collabora.com>2015-01-20 18:12:38 +0200
commitbff635be1d45ce721f5e40c64f665a247b995133 (patch)
tree5f3709f766cd02a1cdc4b1f2306bba975c7c8edd /scaddins
parentf1cf63c223fd7b4771df687ae9fe37faeccdb8fe (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.mk1
-rw-r--r--scaddins/source/analysis/analysis.cxx4
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 );
}