From 7c6a72c84b943485d215070a8ca8494d31b1dd7d Mon Sep 17 00:00:00 2001
From: Guillaume Pernot <guillaume.pernot@c-s.fr>
Date: Sat, 21 Mar 2020 10:25:39 +0100
Subject: [PATCH] Initialize seed with std::time if not user-supplied

---
 .../AppClassification/app/otbSOMClassification.cxx          | 6 +++++-
 .../ApplicationEngine/include/otbWrapperApplication.h       | 5 ++---
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/Modules/Applications/AppClassification/app/otbSOMClassification.cxx b/Modules/Applications/AppClassification/app/otbSOMClassification.cxx
index 07170eac2f..0a5f9bd75b 100644
--- a/Modules/Applications/AppClassification/app/otbSOMClassification.cxx
+++ b/Modules/Applications/AppClassification/app/otbSOMClassification.cxx
@@ -28,6 +28,8 @@
 #include "itkImageRegionConstIterator.h"
 #include "itkImageRandomNonRepeatingConstIteratorWithIndex.h"
 
+#include <ctime>
+
 namespace otb
 {
 namespace Wrapper
@@ -178,7 +180,9 @@ private:
 
   void DoUpdateParameters() override
   {
-    // Nothing to do
+    if (!HasUserValue("rand")) {
+      SetParameterInt("rand", std::time(0));
+    }
   }
 
   void DoExecute() override
diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperApplication.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperApplication.h
index e145352b49..63f4621775 100644
--- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperApplication.h
+++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperApplication.h
@@ -870,11 +870,10 @@ protected:
   /** Add a parameterRAM method with parameter*/
   void AddRAMParameter(std::string const& paramKey, std::string const& paramName, unsigned int defaultValue);
 
-  /** Add a parameterRAND method with no parameter*/
+  /** Add a parameterRAND method with no parameter */
   void AddRANDParameter(std::string const& paramKey = "rand");
 
-  /** Add a parameterRAND method with parameter
-   * by default seed initialization is based on time value*/
+  /** Add a parameterRAND method with parameter */
   void AddRANDParameter(std::string const& paramKey, std::string const& paramName, unsigned int defaultValue);
 
   /** Remove the items added to the ListWidget */
-- 
GitLab