MyNixOS website logo
Description

High-quality random number generation as an effect.

This package wraps the mwc-random package and provides a convenient interface to invoke its functions from an effect stack.

fused-effects-mwc-random

Hackage BSD3 license

High-quality uniformly-distributed pseudorandom number generation as an effect.

This library provides a Random effect that piggybacks atop the mwc-random package, which produces high-quality random numbers in efficient time. A carrier type (Control.Carrier.Random.Lifted) encapsulates generator state and provides a convenient API to invoke system random number generation or pass a predefined seed. The mwc-random package is finely tuned; as such, this package should be an industrial-strength source of random numbers, suitable for tight loops.

Please note that the MWC-256 algorithm that underlies mwc-random is not cryptographically secure and should not be used for such purposes. Crypto code should use cryptonite, as I'm sure you already know.

For more advanced users, there exists also a module (Control.Carrier.Random.Instances) that provides the orphan instances required to use most fused-effect stacks with the PrimMonad machinery that powers mwc-random. This module is most useful when porting monad transformer stacks that already use the mwc-random API, or if you need to drop into the native mwc-random API.

Metadata

Version

0.1.0.0

Platforms (77)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-freebsd
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64-windows
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows