diff options
author | Jason Livesay <ithkuil@gmail.com> | 2014-03-26 18:54:34 -0700 |
---|---|---|
committer | Jason Livesay <ithkuil@gmail.com> | 2014-03-26 18:54:34 -0700 |
commit | cabc5c80d36bc515ffbc6787995aac7886cdcfc6 (patch) | |
tree | a2d937b1057efe3a06fed4d95a9a8707c59e8a1d | |
parent | dc956c485aa9d8becd3d9eb3c2086ebac3b6eeed (diff) | |
download | Nim-cabc5c80d36bc515ffbc6787995aac7886cdcfc6.tar.gz |
Calling randomize() again within 1 second will now provide a different seed
-rw-r--r-- | lib/pure/math.nim | 4 | ||||
-rw-r--r-- | tests/stdlib/tmath.nim | 14 |
2 files changed, 17 insertions, 1 deletions
diff --git a/lib/pure/math.nim b/lib/pure/math.nim index 062cfae25..94570fc68 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 a86a3b84c..fc9486093 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 + |