Use `rand` module instead of `random`
diff --git a/include/folsom.hrl b/include/folsom.hrl
index 0249e7e..1e0f8dd 100644
--- a/include/folsom.hrl
+++ b/include/folsom.hrl
@@ -34,7 +34,7 @@
           window = ?DEFAULT_SLIDING_WINDOW,
           size = ?DEFAULT_SIZE,
           reservoir = folsom_metrics_histogram_ets:new(folsom_slide_uniform,[set, {write_concurrency, true}, public]),
-          seed = os:timestamp(),
+          seed = rand:seed_s(exsplus, os:timestamp()),
           server
          }).
 
@@ -42,7 +42,7 @@
           size = ?DEFAULT_SIZE,
           n = 1,
           reservoir = folsom_metrics_histogram_ets:new(folsom_uniform,[set, {write_concurrency, true}, public]),
-          seed = os:timestamp()
+          seed = rand:seed_s(exsplus, os:timestamp())
          }).
 
 -record(exdec, {
@@ -50,7 +50,7 @@
           next = 0,
           alpha = ?DEFAULT_ALPHA,
           size = ?DEFAULT_SIZE,
-          seed = os:timestamp(),
+          seed = rand:seed_s(exsplus, os:timestamp()),
           n = 1,
           reservoir = folsom_metrics_histogram_ets:new(folsom_exdec,[ordered_set, {write_concurrency, true}, public])
          }).
diff --git a/src/folsom_sample_exdec.erl b/src/folsom_sample_exdec.erl
index a7a5d04..d065406 100644
--- a/src/folsom_sample_exdec.erl
+++ b/src/folsom_sample_exdec.erl
@@ -64,7 +64,7 @@
 update(#exdec{reservoir = Reservoir, alpha = Alpha, start = Start, n = N, size = Size, seed = Seed} = Sample, Value, Timestamp) when N =< Size ->
     % since N is =< Size we can just add the new value to the sample
 
-    {Rand, New_seed} = random:uniform_s(N, Seed),
+    {Rand, New_seed} = rand:uniform_s(N, Seed),
     Priority = priority(Alpha, Timestamp, Start, Rand),
     true = ets:insert(Reservoir, {Priority, Value}),
 
@@ -73,7 +73,7 @@
     % when N is not =< Size we need to check to see if the priority of
     % the new value is greater than the first (smallest) existing priority
 
-    {Rand, NewSeed} = random:uniform_s(N, Seed),
+    {Rand, NewSeed} = rand:uniform_s(N, Seed),
     Priority = priority(Alpha, Timestamp, Start, Rand),
     First = ets:first(Reservoir),
 
diff --git a/src/folsom_sample_slide_uniform.erl b/src/folsom_sample_slide_uniform.erl
index 906e5d8..450b9dc 100644
--- a/src/folsom_sample_slide_uniform.erl
+++ b/src/folsom_sample_slide_uniform.erl
@@ -45,7 +45,8 @@
     MCnt = folsom_utils:update_counter(Reservoir, Moment, 1),
     Sample = case MCnt > Size of
                  true ->
-                     {Rnd, _NewSeed} = random:uniform_s(MCnt, Now),
+                     Seed = rand:seed_s(exsplus, Now),
+                     {Rnd, _NewSeed} = rand:uniform_s(MCnt, Seed),
                      maybe_update(Reservoir, {{Moment, Rnd}, Value}, Size),
                      Sample0;
                  false ->
diff --git a/src/folsom_sample_uniform.erl b/src/folsom_sample_uniform.erl
index 26b4bec..8743352 100644
--- a/src/folsom_sample_uniform.erl
+++ b/src/folsom_sample_uniform.erl
@@ -49,7 +49,7 @@
 
 update(#uniform{reservoir = Reservoir, size = Size, n = N, seed = Seed} = Sample,
        Value) ->
-    {Rnd, New_seed} = random:uniform_s(N, Seed),
+    {Rnd, New_seed} = rand:uniform_s(N, Seed),
     maybe_update(Rnd, Size, Value, Reservoir),
     Sample#uniform{n = N + 1, seed = New_seed}.