Skip to content

Commit e353936

Browse files
committed
Fix LCG clamping
1 parent 3e5427f commit e353936

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/Test/QuickCheck/LCG.purs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ seedMin = 1
5858

5959
-- | The maximum permissible Seed value.
6060
seedMax :: Int
61-
seedMax = lcgM - 1
61+
seedMax = lcgN - 1
6262

6363
-- | A seed for the linear congruential generator. We omit a `Semiring`
6464
-- | instance because there is no `zero` value, as 0 is not an acceptable
@@ -73,8 +73,11 @@ runSeed (Seed x) = x
7373

7474
ensureBetween :: Int -> Int -> Int -> Int
7575
ensureBetween min max n =
76-
let rangeSize = max - min
77-
in (((n `mod` rangeSize) + rangeSize) `mod` rangeSize) + min
76+
let
77+
rangeSize = max - min
78+
n' = n `mod` rangeSize
79+
in
80+
if n' < min then n' + max else n'
7881

7982
instance showSeed :: Show Seed where
8083
show (Seed x) = "Seed " <> show x

0 commit comments

Comments
 (0)