From cabc5c80d36bc515ffbc6787995aac7886cdcfc6 Mon Sep 17 00:00:00 2001 From: Jason Livesay Date: Wed, 26 Mar 2014 18:54:34 -0700 Subject: [PATCH] Calling randomize() again within 1 second will now provide a different seed --- lib/pure/math.nim | 4 +++- tests/stdlib/tmath.nim | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/pure/math.nim b/lib/pure/math.nim index 062cfae252..94570fc681 100644 --- a/lib/pure/math.nim +++ b/lib/pure/math.nim @@ -20,6 +20,8 @@ when defined(Posix) and not defined(haiku): {.passl: "-lm".} +import times + const PI* = 3.1415926535897932384626433 ## the circle constant PI (Ludolph's number) E* = 2.71828182845904523536028747 ## Euler's number @@ -201,7 +203,7 @@ when not defined(JS): result = drand48() * max proc randomize() = - randomize(gettime(nil)) + randomize(cast[int](epochTime())) proc randomize(seed: int) = srand(cint(seed)) diff --git a/tests/stdlib/tmath.nim b/tests/stdlib/tmath.nim index a86a3b84ce..fc9486093d 100644 --- a/tests/stdlib/tmath.nim +++ b/tests/stdlib/tmath.nim @@ -23,6 +23,13 @@ suite "random int": rand = random(100..1000) check rand < 1000 check rand >= 100 + test "randomize() again gives new numbers": + randomize() + var rand1 = random(1000000) + randomize() + var rand2 = random(1000000) + check rand1 != rand2 + suite "random float": test "there might be some randomness": @@ -45,3 +52,10 @@ suite "random float": rand = random(100.0..1000.0) check rand < 1000.0 check rand >= 100.0 + test "randomize() again gives new numbers": + randomize() + var rand1:float = random(1000000.0) + randomize() + var rand2:float = random(1000000.0) + check rand1 != rand2 +