Copyright | (c) Michal Konecny |
---|---|
License | BSD3 |
Maintainer | mikkonecny@gmail.com |
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
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 = (CanAddSubMulDivCNBy t Integer, CanAddSameType t, CanSubSameType t, CanAbsSameType t, CanDivIModIntegerSameType t, ConvertibleExactly 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 = (CanAddSubMulDivCNBy t Integer, CanAddSameType t, CanSubSameType t, CanAbsSameType t, CanDivIModIntegerSameType t, ConvertibleExactly b t, HasOrderCertainly t t) Source #