diff --git a/tests/core/random.t.cpp b/tests/core/random.t.cpp
index fa9c4a7..dcd1576 100644
--- a/tests/core/random.t.cpp
+++ b/tests/core/random.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2015,  Regents of the University of California,
+ * Copyright (c) 2014-2016,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -32,15 +32,15 @@
 namespace nfd {
 namespace tests {
 
-BOOST_FIXTURE_TEST_SUITE(TestRandom, BaseFixture)
+BOOST_AUTO_TEST_SUITE(TestRandom)
 
-BOOST_AUTO_TEST_CASE(ThreadLocalRandon)
+BOOST_AUTO_TEST_CASE(ThreadLocalRng)
 {
-  boost::random::mt19937* s1 = &getGlobalRng();
-  boost::random::mt19937* s2 = nullptr;
+  std::mt19937* s1 = &getGlobalRng();
+  std::mt19937* s2 = nullptr;
   boost::thread t([&s2] {
-      s2 = &getGlobalRng();
-    });
+    s2 = &getGlobalRng();
+  });
 
   t.join();
 
@@ -49,7 +49,7 @@
   BOOST_CHECK(s1 != s2);
 }
 
-BOOST_AUTO_TEST_SUITE_END()
+BOOST_AUTO_TEST_SUITE_END() // TestRandom
 
 } // namespace tests
 } // namespace nfd
diff --git a/tests/daemon/fw/asf-strategy.t.cpp b/tests/daemon/fw/asf-strategy.t.cpp
index af584cf..601083d 100644
--- a/tests/daemon/fw/asf-strategy.t.cpp
+++ b/tests/daemon/fw/asf-strategy.t.cpp
@@ -158,8 +158,8 @@
   runConsumer();
 
   BOOST_CHECK_EQUAL(consumer->getForwarderFace().getCounters().nOutData, 89);
-  BOOST_CHECK_LE(linkAB->getFace(nodeA).getCounters().nOutInterests, 60);
-  BOOST_CHECK_GE(linkAD->getFace(nodeA).getCounters().nOutInterests, 60);
+  BOOST_CHECK_LE(linkAB->getFace(nodeA).getCounters().nOutInterests, 61); // FIXME #3830
+  BOOST_CHECK_GE(linkAD->getFace(nodeA).getCounters().nOutInterests, 59); // FIXME #3830
 }
 
 BOOST_FIXTURE_TEST_CASE(Nack, AsfGridFixture)
diff --git a/tests/daemon/mgmt/face-manager.t.cpp b/tests/daemon/mgmt/face-manager.t.cpp
index c189894..325b344 100644
--- a/tests/daemon/mgmt/face-manager.t.cpp
+++ b/tests/daemon/mgmt/face-manager.t.cpp
@@ -24,13 +24,13 @@
  */
 
 #include "mgmt/face-manager.hpp"
+#include "core/random.hpp"
 #include "face/tcp-factory.hpp"
 #include "face/udp-factory.hpp"
 
 #include "nfd-manager-common-fixture.hpp"
 #include "../face/dummy-face.hpp"
 
-#include <ndn-cxx/util/random.hpp>
 #include <ndn-cxx/encoding/tlv.hpp>
 #include <ndn-cxx/mgmt/nfd/channel-status.hpp>
 #include <ndn-cxx/mgmt/nfd/face-event-notification.hpp>
@@ -103,7 +103,8 @@
   static typename std::enable_if<std::is_base_of<SimpleCounter, T>::value>::type
   randomizeCounter(const T& counter)
   {
-    const_cast<T&>(counter).set(ndn::random::generateWord64());
+    static std::uniform_int_distribution<typename T::rep> dist;
+    const_cast<T&>(counter).set(dist(getGlobalRng()));
   }
 
 protected:
diff --git a/tests/daemon/mgmt/strategy-choice-manager.t.cpp b/tests/daemon/mgmt/strategy-choice-manager.t.cpp
index 56f22a7..7aa54ac 100644
--- a/tests/daemon/mgmt/strategy-choice-manager.t.cpp
+++ b/tests/daemon/mgmt/strategy-choice-manager.t.cpp
@@ -25,6 +25,7 @@
 
 #include "mgmt/strategy-choice-manager.hpp"
 
+#include "core/random.hpp"
 #include "face/face.hpp"
 #include "face/internal-face.hpp"
 #include "fw/strategy.hpp"
@@ -36,7 +37,6 @@
 #include "tests/daemon/fw/dummy-strategy.hpp"
 #include "tests/daemon/fw/install-strategy.hpp"
 
-#include <ndn-cxx/util/random.hpp>
 #include <ndn-cxx/mgmt/nfd/strategy-choice.hpp>
 
 namespace nfd {
@@ -200,10 +200,11 @@
     actualStrategies.insert(entry.getStrategyName());
   }
 
+  std::uniform_int_distribution<uint64_t> dist;
   size_t nEntries = 1024;
   for (size_t i = 0 ; i < nEntries ; i++) {
     auto name = Name("test-name").appendSegment(i);
-    auto strategy = Name("test-strategy").appendSegment(ndn::random::generateWord64());
+    auto strategy = Name("test-strategy").appendSegment(dist(getGlobalRng()));
     auto entry = ndn::nfd::StrategyChoice().setName(name).setStrategy(strategy);
     actualNames.insert(name);
     actualStrategies.insert(strategy);
diff --git a/tests/rib/rib-manager.t.cpp b/tests/rib/rib-manager.t.cpp
index dfbeb29..8cbc5fb 100644
--- a/tests/rib/rib-manager.t.cpp
+++ b/tests/rib/rib-manager.t.cpp
@@ -25,12 +25,12 @@
 
 #include "rib/rib-manager.hpp"
 #include "manager-common-fixture.hpp"
+#include "core/random.hpp"
 
 #include <ndn-cxx/lp/tags.hpp>
 #include <ndn-cxx/mgmt/nfd/rib-entry.hpp>
 #include <ndn-cxx/mgmt/nfd/face-status.hpp>
 #include <ndn-cxx/mgmt/nfd/face-event-notification.hpp>
-#include <ndn-cxx/util/random.hpp>
 
 namespace nfd {
 namespace rib {
@@ -482,11 +482,12 @@
 
 BOOST_FIXTURE_TEST_CASE(RibDataset, UnauthorizedRibManagerFixture)
 {
+  std::uniform_int_distribution<uint64_t> dist;
   uint64_t faceId = 0;
-  auto generateRoute = [&faceId] () -> Route {
+  auto generateRoute = [&dist, &faceId] () -> Route {
     Route route;
     route.faceId = ++faceId;
-    route.cost = ndn::random::generateWord64();
+    route.cost = dist(getGlobalRng());
     route.expires = time::steady_clock::TimePoint::max();
     return route;
   };
