| Copyright | (c) Michal Konecny |
|---|---|
| License | BSD3 |
| Maintainer | mikkonecny@gmail.com |
| Stability | experimental |
| Portability | portable |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
Utils.Test.EnforceRange
Description
Utility for squashing randomly generated numbers to a given range.
Synopsis
- enforceRange :: CanEnforceRange t b => (Maybe b, Maybe b) -> t -> t
- type CanEnforceRange t b = (CanAddSubMulDivBy t Integer, CanAddSameType t, CanSubSameType t, CanAbsSameType t, CanDivIModIntegerSameType t, ConvertibleExactlyWithSample b t, HasOrderCertainly t t)
Documentation
enforceRange :: CanEnforceRange t b => (Maybe b, Maybe b) -> t -> t Source #
enforceRange (Just l, Just u) a where l < u returns an arbitrary value b with u < b < l.
Moreover, the returned values are distributed roughly evenly if the input values a are distributed
roughly evenly in a large neighbourhood of the interval [l,r].
In most cases, when l<a<u, then b=a.
type CanEnforceRange t b = (CanAddSubMulDivBy t Integer, CanAddSameType t, CanSubSameType t, CanAbsSameType t, CanDivIModIntegerSameType t, ConvertibleExactlyWithSample b t, HasOrderCertainly t t) Source #