diff --git a/SConstruct b/SConstruct
index fda628c..39842ea 100644
--- a/SConstruct
+++ b/SConstruct
@@ -305,6 +305,7 @@
                             policy_manager/generic_variables_unittest.cc
                             policy_manager/pmtest_utils.cc
                             policy_manager/policy_manager_unittest.cc
+                            policy_manager/prng_unittest.cc
                             policy_manager/real_config_provider_unittest.cc
                             policy_manager/real_device_policy_provider_unittest.cc
                             policy_manager/real_random_provider_unittest.cc
diff --git a/policy_manager/prng.h b/policy_manager/prng.h
new file mode 100644
index 0000000..2922e9f
--- /dev/null
+++ b/policy_manager/prng.h
@@ -0,0 +1,33 @@
+// Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_PRNG_H_
+#define CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_PRNG_H_
+
+#include <cstdlib>
+
+#include <base/basictypes.h>
+
+namespace chromeos_policy_manager {
+
+// An unsecure Pseudo-Random Number Generator class based on rand_r(3), which
+// is thread safe and doesn't interfere with other calls to rand().
+class PRNG {
+ public:
+  // Creates the object using the passed |seed| value as the initial state.
+  explicit PRNG(unsigned int seed) : state_(seed) {}
+
+  // Returns a pseudo-random integer in the range [0, RAND_MAX].
+  int rand() { return rand_r(&state_); }
+
+ private:
+  // The internal state of the PRNG.
+  unsigned int state_;
+
+  DISALLOW_COPY_AND_ASSIGN(PRNG);
+};
+
+}  // namespace chromeos_policy_manager
+
+#endif  // CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_PRNG_H_
diff --git a/policy_manager/prng_unittest.cc b/policy_manager/prng_unittest.cc
new file mode 100644
index 0000000..4bdf836
--- /dev/null
+++ b/policy_manager/prng_unittest.cc
@@ -0,0 +1,52 @@
+// Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "update_engine/policy_manager/prng.h"
+
+#include <vector>
+
+#include <gtest/gtest.h>
+
+using std::vector;
+
+namespace chromeos_policy_manager {
+
+TEST(PmPRNGTest, ShouldBeDeterministic) {
+  PRNG a(42);
+  PRNG b(42);
+
+  for (int i = 0; i < 1000; ++i) {
+    EXPECT_EQ(a.rand(), b.rand()) << "Iteration i=" << i;
+  }
+}
+
+TEST(PmPRNGTest, SeedChangesGeneratedSequence) {
+  PRNG a(42);
+  PRNG b(5);
+
+  vector<int> values_a;
+  vector<int> values_b;
+
+  for (int i = 0; i < 100; ++i) {
+    values_a.push_back(a.rand());
+    values_b.push_back(b.rand());
+  }
+  EXPECT_NE(values_a, values_b);
+}
+
+TEST(PmPRNGTest, IsNotConstant) {
+  PRNG prng(5);
+
+  int initial_value = prng.rand();
+  bool prng_is_constant = true;
+  for (int i = 0; i < 100; ++i) {
+    if (prng.rand() != initial_value) {
+      prng_is_constant = false;
+      break;
+    }
+  }
+  EXPECT_FALSE(prng_is_constant) << "After 100 iterations.";
+}
+
+}  // namespace chromeos_policy_manager
