From 057933d680537542c1029e396dcc98cc8cf6bfa9 Mon Sep 17 00:00:00 2001 From: Gary Wolfman Date: Thu, 23 Apr 2026 22:04:21 -0400 Subject: [PATCH] Replace random_shuffle with std::shuffle for C++17 Use std::shuffle with a thread-local mt19937 engine in sequence::shuffle to preserve shuffle behavior with modern C++ standards. Co-Authored-By: Oz --- src/sequence.cpp | 8 +++++--- src/sequence.h | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/sequence.cpp b/src/sequence.cpp index d1cdb48f..fda79f0b 100755 --- a/src/sequence.cpp +++ b/src/sequence.cpp @@ -26,6 +26,7 @@ //CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "sequence.h" +#include namespace StochHMM{ @@ -1032,15 +1033,16 @@ namespace StochHMM{ //Shuffles the sequence void sequence::shuffle(){ + static thread_local std::mt19937 random_engine(std::random_device{}()); if (realSeq){ - std::random_shuffle(real->begin(), real->end()); + std::shuffle(real->begin(), real->end(), random_engine); } else if (seq!=NULL){ - std::random_shuffle(seq->begin(), seq->end()); + std::shuffle(seq->begin(), seq->end(), random_engine); } else{ - std::random_shuffle(undigitized.begin(), undigitized.end()); + std::shuffle(undigitized.begin(), undigitized.end(), random_engine); } return; } diff --git a/src/sequence.h b/src/sequence.h index 0175d134..361bf9e4 100755 --- a/src/sequence.h +++ b/src/sequence.h @@ -176,7 +176,7 @@ namespace StochHMM{ //!Converts sequence digital based on track alphabet bool digitize(); - //! Shuffles the sequence using std::random_shuffle + //! Shuffles the sequence using std::shuffle void shuffle(); inline std::vector* getDigitalSeq(){return seq;}