sc/inc/strings.hrc | 3 sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx | 32 +++++++--- sc/uiconfig/scalc/ui/randomnumbergenerator.ui | 1 3 files changed, 28 insertions(+), 8 deletions(-)
New commits: commit 793cc7d2ef5967af90a6810e597e1e12bd42777c Author: Bartosz Kosiorek <gan...@poczta.onet.pl> AuthorDate: Fri May 5 20:15:19 2023 +0200 Commit: Tomaž Vajngerl <qui...@gmail.com> CommitDate: Sat May 6 03:54:25 2023 +0200 tdf#154872 Add Poisson distribution to Random Number Generators Change-Id: I325a76423a98a405dfb0f69fbd89eb9253c36390 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151439 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> diff --git a/sc/inc/strings.hrc b/sc/inc/strings.hrc index e860263424be..6c85b3d617da 100644 --- a/sc/inc/strings.hrc +++ b/sc/inc/strings.hrc @@ -266,9 +266,10 @@ #define STR_DISTRIBUTION_CAUCHY NC_("STR_DISTRIBUTION_CAUCHY", "Cauchy") #define STR_DISTRIBUTION_BERNOULLI NC_("STR_DISTRIBUTION_BERNOULLI", "Bernoulli") #define STR_DISTRIBUTION_BINOMIAL NC_("STR_DISTRIBUTION_BINOMIAL", "Binomial") -#define STR_DISTRIBUTION_NEGATIVE_BINOMIAL NC_("STR_DISTRIBUTION_NEGATIVE_BINOMIAL", "Negative Binomial") #define STR_DISTRIBUTION_CHI_SQUARED NC_("STR_DISTRIBUTION_CHI_SQUARED", "Chi Squared") #define STR_DISTRIBUTION_GEOMETRIC NC_("STR_DISTRIBUTION_GEOMETRIC", "Geometric") +#define STR_DISTRIBUTION_NEGATIVE_BINOMIAL NC_("STR_DISTRIBUTION_NEGATIVE_BINOMIAL", "Negative Binomial") +#define STR_DISTRIBUTION_POISSON NC_("STR_DISTRIBUTION_POISSON", "Poisson") #define STR_RNG_PARAMETER_MINIMUM NC_("STR_RNG_PARAMETER_MINIMUM", "Minimum") #define STR_RNG_PARAMETER_MAXIMUM NC_("STR_RNG_PARAMETER_MAXIMUM", "Maximum") #define STR_RNG_PARAMETER_MEAN NC_("STR_RNG_PARAMETER_MEAN", "Mean") diff --git a/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx b/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx index 91b43cbe0433..2490ebf47301 100644 --- a/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx +++ b/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx @@ -36,6 +36,7 @@ const sal_Int64 DIST_CHI_SQUARED = 5; const sal_Int64 DIST_GEOMETRIC = 6; const sal_Int64 DIST_NEGATIVE_BINOMIAL = 7; const sal_Int64 DIST_UNIFORM_INTEGER = 8; +const sal_Int64 DIST_POISSON = 9; const sal_Int64 PRECISION = 10000; const sal_Int64 DIGITS = 4; @@ -225,13 +226,6 @@ void ScRandomNumberGeneratorDialog::SelectGeneratorAndGenerateNumbers() GenerateNumbers(rng, STR_DISTRIBUTION_BINOMIAL, aDecimalPlaces); break; } - case DIST_NEGATIVE_BINOMIAL: - { - std::negative_binomial_distribution<> distribution(parameterInteger2, parameter1); - auto rng = std::bind(distribution, seed); - GenerateNumbers(rng, STR_DISTRIBUTION_NEGATIVE_BINOMIAL, aDecimalPlaces); - break; - } case DIST_CHI_SQUARED: { std::chi_squared_distribution<> distribution(parameter1); @@ -246,6 +240,20 @@ void ScRandomNumberGeneratorDialog::SelectGeneratorAndGenerateNumbers() GenerateNumbers(rng, STR_DISTRIBUTION_GEOMETRIC, aDecimalPlaces); break; } + case DIST_NEGATIVE_BINOMIAL: + { + std::negative_binomial_distribution<> distribution(parameterInteger2, parameter1); + auto rng = std::bind(distribution, seed); + GenerateNumbers(rng, STR_DISTRIBUTION_NEGATIVE_BINOMIAL, aDecimalPlaces); + break; + } + case DIST_POISSON: + { + std::poisson_distribution<> distribution(parameter1); + auto rng = std::bind(distribution, seed); + GenerateNumbers(rng, STR_DISTRIBUTION_POISSON, aDecimalPlaces); + break; + } } } @@ -476,6 +484,16 @@ IMPL_LINK_NOARG(ScRandomNumberGeneratorDialog, DistributionChanged, weld::ComboB mxParameter2Value->hide(); break; } + case DIST_POISSON: + { + mxParameter1Text->set_label(ScResId(STR_RNG_PARAMETER_MEAN)); + mxParameter1Value->set_value(PRECISION); + mxParameter1Value->set_increments(1000, 10000); + mxParameter1Value->set_min(1000); + mxParameter2Text->hide(); + mxParameter2Value->hide(); + break; + } } } diff --git a/sc/uiconfig/scalc/ui/randomnumbergenerator.ui b/sc/uiconfig/scalc/ui/randomnumbergenerator.ui index e6f8f93ba214..d9481046bd8f 100644 --- a/sc/uiconfig/scalc/ui/randomnumbergenerator.ui +++ b/sc/uiconfig/scalc/ui/randomnumbergenerator.ui @@ -240,6 +240,7 @@ <item id="5" translatable="yes" context="randomnumbergenerator|distribution-liststore">Chi Squared</item> <item id="6" translatable="yes" context="randomnumbergenerator|distribution-liststore">Geometric</item> <item id="7" translatable="yes" context="randomnumbergenerator|distribution-liststore">Negative Binomial</item> + <item id="9" translatable="yes" context="randomnumbergenerator|distribution-liststore">Poisson</item> </items> <child internal-child="accessible"> <object class="AtkObject" id="distribution-combo-atkobject">