diff --git a/unit_tests/data/Test_Tensor.cpp b/unit_tests/data/Test_Tensor.cpp
index 98d3193ffc56f78bb5274ebe0795a4d67d163d27..a536f113f7d11eb8cec81b5fdbf57909bd70611d 100644
--- a/unit_tests/data/Test_Tensor.cpp
+++ b/unit_tests/data/Test_Tensor.cpp
@@ -14,13 +14,14 @@
 #include <cstdint>     // std::uint8_t, std::uint16_t, std::int32_t
 #include <numeric>     // std::accumulate, std::inner_product
 #include <functional>  // std::multiplies
-#include <random>      // std::random_device, std::mt19937,
+#include <random>      // std::mt19937,
                        // std::uniform_int_distribution, std::uniform_real_distribution
 #include <set>
 #include <string>
 #include <vector>
 
 #include <catch2/catch_test_macros.hpp>
+#include <catch2/generators/catch_generators_random.hpp>
 
 #include "aidge/backend/cpu/data/TensorImpl.hpp"
 #include "aidge/data/Data.hpp"
@@ -127,7 +128,7 @@ TEST_CASE("[core/data] Tensor(Construction)", "[Tensor][Constructor]") {
         constexpr std::uint16_t NBTRIALS = 10;
 
         // Create random number generators
-        std::random_device rd;
+        auto rd = Catch::Generators::Detail::getSeed;
         std::mt19937 gen(rd());
         std::uniform_int_distribution<std::size_t> dimsDist(1, 10);
         std::uniform_int_distribution<std::size_t> nbDimsDist(1, 5);
@@ -169,7 +170,7 @@ TEST_CASE("[core/data] Tensor(getter/setter)", "[Tensor][Getter][Setter]") {
     constexpr std::uint16_t NBTRIALS = 10;
 
     // Create random number generators
-    std::random_device rd;
+    auto rd = Catch::Generators::Detail::getSeed;
     std::mt19937 gen(rd());
     std::uniform_int_distribution<std::size_t> dimsDist(1, 10);
     std::uniform_int_distribution<std::size_t> nbDimsDist(1, 5);
@@ -261,7 +262,7 @@ TEST_CASE("[core/data] Tensor(other)", "[Tensor][extract][zeros][print]") {
     constexpr std::uint16_t NBTRIALS = 10;
 
     // Create random number generators
-    std::random_device rd;
+    auto rd = Catch::Generators::Detail::getSeed;
     std::mt19937 gen(rd());
     std::uniform_int_distribution<std::size_t> dimsDist(1, 10);
     std::uniform_int_distribution<std::size_t> nbDimsDist(1, 5);
diff --git a/unit_tests/graph/Test_GraphView.cpp b/unit_tests/graph/Test_GraphView.cpp
index 8e9f5a27e275a5ce56ddf57fa092ec96cec84711..d9289c4aa3f4b44ce72d772c9a39dd8e66ab09e7 100644
--- a/unit_tests/graph/Test_GraphView.cpp
+++ b/unit_tests/graph/Test_GraphView.cpp
@@ -17,6 +17,7 @@
 #include <string>
 
 #include <catch2/catch_test_macros.hpp>
+#include <catch2/generators/catch_generators_random.hpp>
 
 #include "aidge/backend/OperatorImpl.hpp"
 #include "aidge/data/Tensor.hpp"
@@ -35,7 +36,7 @@ TEST_CASE("genRandomGraph", "[GraphView][randomGen]") {
     size_t nbUnicity = 0;
 
     for (int test = 0; test < nbTests; ++test) {
-        std::random_device rd;
+        auto rd = Catch::Generators::Detail::getSeed;
         const std::mt19937::result_type seed(rd());
 
         RandomGraph randGraph;
@@ -81,7 +82,7 @@ TEST_CASE("clone", "[GraphView][clone]") {
     const size_t nbTests = 100;
 
     for (int test = 0; test < nbTests; ++test) {
-        std::random_device rd;
+        auto rd = Catch::Generators::Detail::getSeed;
         const std::mt19937::result_type seed(rd());
 
         RandomGraph randGraph;
@@ -155,7 +156,7 @@ TEST_CASE("remove", "[GraphView][remove]") {
     size_t nbTested = 0;
 
     for (int test = 0; test < nbTests; ++test) {
-        std::random_device rd;
+        auto rd = Catch::Generators::Detail::getSeed;
         const std::mt19937::result_type seed(rd());
 
         RandomGraph randGraph;
diff --git a/unit_tests/operator/Test_Div_Op.cpp b/unit_tests/operator/Test_Div_Op.cpp
index cef7bc53ef7e9247e59077028a728e9b1bb2aebe..d35edec17cd9732119cfcaf249b5e7965a14ea65 100644
--- a/unit_tests/operator/Test_Div_Op.cpp
+++ b/unit_tests/operator/Test_Div_Op.cpp
@@ -10,9 +10,10 @@
  ********************************************************************************/
 
 #include <catch2/catch_test_macros.hpp>
+#include <catch2/generators/catch_generators_random.hpp>
 #include <cstddef>  // std::size_t
 #include <memory>
-#include <random>   // std::random_device, std::mt19937, std::uniform_int_distribution
+#include <random>   // std::mt19937, std::uniform_int_distribution
 #include <vector>
 
 #include "aidge/data/Tensor.hpp"
@@ -24,7 +25,7 @@ TEST_CASE("[core/operator] Div_Op(forwardDims)", "[Div][forwardDims]") {
     constexpr std::uint16_t NBTRIALS = 10;
 
     // Create a random number generator
-    std::random_device rd;
+    auto rd = Catch::Generators::Detail::getSeed;
     std::mt19937 gen(rd());
     std::uniform_int_distribution<std::size_t> dimsDist(1, 10);
     std::uniform_int_distribution<std::size_t> nbDimsDist(1, 5);
diff --git a/unit_tests/operator/Test_GlobalAveragePooling_Op.cpp b/unit_tests/operator/Test_GlobalAveragePooling_Op.cpp
index 1d99fc7a513d0fa183fac786acee253a7cc97f10..15c714b63c2b86e156b43cdaec390ddf60eb7353 100644
--- a/unit_tests/operator/Test_GlobalAveragePooling_Op.cpp
+++ b/unit_tests/operator/Test_GlobalAveragePooling_Op.cpp
@@ -10,9 +10,10 @@
  ********************************************************************************/
 
 #include <catch2/catch_test_macros.hpp>
+#include <catch2/generators/catch_generators_random.hpp>
 #include <cstddef> // std::size_t
 #include <memory>
-#include <random> // std::random_device, std::mt19937, std::uniform_int_distribution
+#include <random> // std::mt19937, std::uniform_int_distribution
 #include <vector>
 
 #include "aidge/data/Tensor.hpp"
@@ -25,7 +26,7 @@ TEST_CASE("[core/operator] GlobalAveragePooling_Op(forwardDims)",
           "[GlobalAveragePooling][forwardDims]") {
   constexpr std::uint16_t NB_TRIALS = 10;
   // Create a random number generator
-  std::random_device rd;
+  auto rd = Catch::Generators::Detail::getSeed;
   std::mt19937 gen(rd());
   std::uniform_int_distribution<std::size_t> dimsDist(1, 10);
   std::uniform_int_distribution<std::size_t> inf3DimsDistribution(1, 2);
diff --git a/unit_tests/operator/Test_MatMul_Op.cpp b/unit_tests/operator/Test_MatMul_Op.cpp
index 102a4ab4ec7d6262bdcc05f0c56605dfcb6af89a..876c1ac764efe54475f6d45982acca76aacb7528 100644
--- a/unit_tests/operator/Test_MatMul_Op.cpp
+++ b/unit_tests/operator/Test_MatMul_Op.cpp
@@ -10,9 +10,10 @@
  ********************************************************************************/
 
 #include <catch2/catch_test_macros.hpp>
+#include <catch2/generators/catch_generators_random.hpp>
 #include <cstddef>  // std::size_t
 #include <memory>
-#include <random>   // std::random_device, std::mt19937, std::uniform_int_distribution
+#include <random>   // std::mt19937, std::uniform_int_distribution
 #include <vector>
 
 #include "aidge/data/Tensor.hpp"
@@ -22,10 +23,11 @@
 namespace Aidge {
 TEST_CASE("[core/operator] MatMul_Op(forwardDims)", "[MatMul][forwardDims]") {
     // Create a random number generator
-    std::random_device rd;
+    auto rd = Catch::Generators::Detail::getSeed;
     std::mt19937 gen(rd());
     std::uniform_int_distribution<std::size_t> dist(1, 10);
 
+    std::cerr << "Test case start, random " << dist(gen) << " " << rd() << std::endl;
     // Create MatMul Operator
     std::shared_ptr<Node> myMatMul = MatMul();
     auto op = std::static_pointer_cast<OperatorTensor>(myMatMul -> getOperator());
diff --git a/unit_tests/operator/Test_Mul_Op.cpp b/unit_tests/operator/Test_Mul_Op.cpp
index 8efd1c2dcff0686dd3f1e589ceae6b0655c7937e..bee90d725b25508abf90813532bb5ca754d8fb9a 100644
--- a/unit_tests/operator/Test_Mul_Op.cpp
+++ b/unit_tests/operator/Test_Mul_Op.cpp
@@ -10,9 +10,10 @@
  ********************************************************************************/
 
 #include <catch2/catch_test_macros.hpp>
+#include <catch2/generators/catch_generators_random.hpp>
 #include <cstddef>  // std::size_t
 #include <memory>
-#include <random>   // std::random_device, std::mt19937, std::uniform_int_distribution
+#include <random>   // std::mt19937, std::uniform_int_distribution
 #include <vector>
 
 #include "aidge/data/Tensor.hpp"
@@ -24,7 +25,7 @@ TEST_CASE("[core/operator] Mul_Op(forwardDims)", "[Mul][forwardDims]") {
     constexpr std::uint16_t NBTRIALS = 10;
 
     // Create a random number generator
-    std::random_device rd;
+    auto rd = Catch::Generators::Detail::getSeed;
     std::mt19937 gen(rd());
     std::uniform_int_distribution<std::size_t> dimsDist(1, 10);
     std::uniform_int_distribution<std::size_t> nbDimsDist(1, 5);
diff --git a/unit_tests/operator/Test_Pow_Op.cpp b/unit_tests/operator/Test_Pow_Op.cpp
index 90b865c1d9bd19e3fce51c2af477a9cde16e33bd..274f7c00b9bd3c3ba57f0463dbe3a1b727141013 100644
--- a/unit_tests/operator/Test_Pow_Op.cpp
+++ b/unit_tests/operator/Test_Pow_Op.cpp
@@ -10,9 +10,10 @@
  ********************************************************************************/
 
 #include <catch2/catch_test_macros.hpp>
+#include <catch2/generators/catch_generators_random.hpp>
 #include <cstddef>  // std::size_t
 #include <memory>
-#include <random>   // std::random_device, std::mt19937, std::uniform_int_distribution
+#include <random>   // std::mt19937, std::uniform_int_distribution
 #include <vector>
 
 #include "aidge/data/Tensor.hpp"
@@ -24,7 +25,7 @@ TEST_CASE("[core/operator] Pow_Op(forwardDims)", "[Pow][forwardDims]") {
     constexpr std::uint16_t NBTRIALS = 10;
 
     // Create a random number generator
-    std::random_device rd;
+    auto rd = Catch::Generators::Detail::getSeed;
     std::mt19937 gen(rd());
     std::uniform_int_distribution<std::size_t> dimsDist(1, 10);
     std::uniform_int_distribution<std::size_t> nbDimsDist(1, 5);
diff --git a/unit_tests/operator/Test_Sub_Op.cpp b/unit_tests/operator/Test_Sub_Op.cpp
index 0797def124a6bbb97c4f15ae98a310a46d313181..110cbbfe68b723a2a670abe590ca5392881170f3 100644
--- a/unit_tests/operator/Test_Sub_Op.cpp
+++ b/unit_tests/operator/Test_Sub_Op.cpp
@@ -10,9 +10,10 @@
  ********************************************************************************/
 
 #include <catch2/catch_test_macros.hpp>
+#include <catch2/generators/catch_generators_random.hpp>
 #include <cstddef>  // std::size_t
 #include <memory>
-#include <random>   // std::random_device, std::mt19937, std::uniform_int_distribution
+#include <random>   // std::mt19937, std::uniform_int_distribution
 #include <vector>
 
 #include "aidge/data/Tensor.hpp"
@@ -24,7 +25,7 @@ TEST_CASE("[core/operator] Sub_Op(forwardDims)", "[Sub][forwardDims]") {
     constexpr std::uint16_t NBTRIALS = 10;
 
     // Create a random number generator
-    std::random_device rd;
+    auto rd = Catch::Generators::Detail::getSeed;
     std::mt19937 gen(rd());
     std::uniform_int_distribution<std::size_t> dimsDist(1, 10);
     std::uniform_int_distribution<std::size_t> nbDimsDist(1, 5);
diff --git a/unit_tests/scheduler/Test_Scheduler.cpp b/unit_tests/scheduler/Test_Scheduler.cpp
index ceaa5e301c820ef54970a0e76004ad3467ae66da..3c3026ff09222f9623d886f9c4574bf23667cd9a 100644
--- a/unit_tests/scheduler/Test_Scheduler.cpp
+++ b/unit_tests/scheduler/Test_Scheduler.cpp
@@ -17,6 +17,7 @@
 #include <string>
 
 #include <catch2/catch_test_macros.hpp>
+#include <catch2/generators/catch_generators_random.hpp>
 
 #include "aidge/backend/OperatorImpl.hpp"
 #include "aidge/data/Tensor.hpp"
@@ -35,7 +36,7 @@ TEST_CASE("randomScheduling", "[Scheduler][randomGen]") {
   std::uniform_int_distribution<std::size_t> nb_nodes_dist(100, 500);
 
   for (int test = 0; test < nbTests; ++test) {
-    std::random_device rd;
+    auto rd = Catch::Generators::Detail::getSeed;
     const std::mt19937::result_type seed(rd());
     std::mt19937 gen(rd());