diff --git a/src/manager.cpp b/src/manager.cpp
index 4e5bce6f8180991b8b7b2dd93ba75863143969dc..54722f24bc78e4fda340251061a5e67cb1911a5c 100644
--- a/src/manager.cpp
+++ b/src/manager.cpp
@@ -2771,6 +2771,16 @@ Manager::setAccountDetails(const std::string& accountID,
     });
 }
 
+std::mt19937_64
+Manager::getSeededRandomEngine()
+{
+    std::array<std::mt19937_64::result_type, std::mt19937_64::state_size> sub_seeds;
+    for (auto& sub_seed : sub_seeds)
+        sub_seed = rand_();
+    std::seed_seq seed(sub_seeds.begin(), sub_seeds.end());
+    return std::mt19937_64(seed);
+}
+
 std::string
 Manager::getNewAccountId()
 {
diff --git a/src/manager.h b/src/manager.h
index a0e822d8f1355625d48001773a9020a49160fe71..659697cd0c3856d03f2cce241d5495fd832f67ba 100644
--- a/src/manager.h
+++ b/src/manager.h
@@ -442,6 +442,8 @@ public:
 
     void setAccountActive(const std::string& accountID, bool active, bool shutdownConnections);
 
+    std::mt19937_64 getSeededRandomEngine();
+
     /**
      * Return a new random accountid that is not present in the list
      * @return A brand new accountid