diff --git a/src/account.cpp b/src/account.cpp
index ded7046ca290eeddc60a575c5f715f30cf3b7c6d..ca588b5326d7a97b2d826b9e5923991aab39c471 100644
--- a/src/account.cpp
+++ b/src/account.cpp
@@ -72,7 +72,7 @@ namespace jami {
 const std::string Account::DEFAULT_USER_AGENT = Account::getDefaultUserAgent();
 
 Account::Account(const std::string& accountID)
-    : rand(dht::crypto::getSeededRandomEngine<std::mt19937_64>())
+    : rand(Manager::instance().getSeededRandomEngine())
     , accountID_(accountID)
     , systemCodecContainer_(getSystemCodecContainer())
 {
diff --git a/src/jamidht/conversation.cpp b/src/jamidht/conversation.cpp
index 187dbe051977e585d8a45d31b7bef727d2e5ea75..b54efd5cc03b5defabb5040015596982c320b0c8 100644
--- a/src/jamidht/conversation.cpp
+++ b/src/jamidht/conversation.cpp
@@ -166,13 +166,13 @@ public:
             ioContext_ = Manager::instance().ioContext();
             fallbackTimer_ = std::make_unique<asio::steady_timer>(*ioContext_);
             swarmManager_ = std::make_shared<SwarmManager>(NodeId(shared->currentDeviceId()),
-            shared->rand,
-            [account=account_](const DeviceId& deviceId) {
-                if (auto acc = account.lock()) {
-                    return acc->isConnectedWith(deviceId);
-                }
-                return false;
-            });
+                Manager::instance().getSeededRandomEngine(),
+                [account=account_](const DeviceId& deviceId) {
+                    if (auto acc = account.lock()) {
+                        return acc->isConnectedWith(deviceId);
+                    }
+                    return false;
+                });
             swarmManager_->setMobility(shared->isMobile());
             accountId_ = shared->getAccountID();
             transferManager_ = std::make_shared<TransferManager>(shared->getAccountID(),
diff --git a/src/jamidht/swarm/swarm_manager.cpp b/src/jamidht/swarm/swarm_manager.cpp
index 837e1f1ea28fd903a3ca7e0764efdd4ba8478f5c..8d042ca3e2dc88f8e11cdfd1a3fa1e3fa35a8734 100644
--- a/src/jamidht/swarm/swarm_manager.cpp
+++ b/src/jamidht/swarm/swarm_manager.cpp
@@ -28,7 +28,7 @@ namespace jami {
 
 using namespace swarm_protocol;
 
-SwarmManager::SwarmManager(const NodeId& id, std::mt19937_64& rand, ToConnectCb&& toConnectCb)
+SwarmManager::SwarmManager(const NodeId& id, const std::mt19937_64& rand, ToConnectCb&& toConnectCb)
     : id_(id)
     , rd(rand)
     , toConnectCb_(toConnectCb)
diff --git a/src/jamidht/swarm/swarm_manager.h b/src/jamidht/swarm/swarm_manager.h
index f568397cc14301d542b6b42af3bb6bdfef42e658..dfa3d0c2bf1818aaecc7659f3d1eb7c70172f7ff 100644
--- a/src/jamidht/swarm/swarm_manager.h
+++ b/src/jamidht/swarm/swarm_manager.h
@@ -38,7 +38,7 @@ class SwarmManager : public std::enable_shared_from_this<SwarmManager>
     using OnConnectionChanged = std::function<void(bool ok)>;
 
 public:
-    explicit SwarmManager(const NodeId&, std::mt19937_64& rand, ToConnectCb&& toConnectCb);
+    explicit SwarmManager(const NodeId&, const std::mt19937_64& rand, ToConnectCb&& toConnectCb);
     ~SwarmManager();
 
     NeedSocketCb needSocketCb_;
@@ -228,7 +228,7 @@ private:
 
     const NodeId id_;
     bool isMobile_ {false};
-    std::mt19937_64& rd;
+    std::mt19937_64 rd;
     mutable std::mutex mutex;
     RoutingTable routing_table;