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">

Reply via email to