dandelion-random 0.3.1

a high performance non-cryptographic random number generator
Documentation
#![allow(missing_docs)]

use dandelion::Rng;
use rand::RngExt as _;
use std::num::NonZeroU128;
use std::num::NonZeroU32;
use std::num::NonZeroU64;

#[inline(never)]
pub fn new(s: NonZeroU128) -> Rng {
  Rng::new(s)
}

#[inline(never)]
pub fn bernoulli(g: &mut Rng, p: f64) -> bool {
  g.bernoulli(p)
}

#[inline(never)]
pub fn bool(g: &mut Rng) -> bool {
  g.bool()
}

#[inline(never)]
pub fn u32(g: &mut Rng) -> u32 {
  g.u32()
}

#[inline(never)]
pub fn u64(g: &mut Rng) -> u64 {
  g.u64()
}

#[inline(never)]
pub fn u128(g: &mut Rng) -> u128 {
  g.u128()
}

#[inline(never)]
pub fn bounded_u32(g: &mut Rng, n: u32) -> u32 {
  g.bounded_u32(n)
}

#[inline(never)]
pub fn bounded_u64(g: &mut Rng, n: u64) -> u64 {
  g.bounded_u64(n)
}

#[inline(never)]
pub fn bounded_u64_zero(g: &mut Rng) -> u64 {
  g.bounded_u64(0)
}

#[inline(never)]
pub fn bounded_u64_255(g: &mut Rng) -> u64 {
  g.bounded_u64(255)
}

#[inline(never)]
pub fn bounded_usize(g: &mut Rng, n: usize) -> usize {
  g.bounded_usize(n)
}

#[inline(never)]
pub fn range_isize(g: &mut Rng, lo: isize, hi: isize) -> isize {
  g.range_isize(lo, hi)
}

#[inline(never)]
pub fn range_u32(g: &mut Rng, lo: u32, hi: u32) -> u32 {
  g.range_u32(lo, hi)
}

#[inline(never)]
pub fn range_u64(g: &mut Rng, lo: u64, hi: u64) -> u64 {
  g.range_u64(lo, hi)
}

#[inline(never)]
pub fn range_usize(g: &mut Rng, lo: usize, hi: usize) -> usize {
  g.range_usize(lo, hi)
}

#[inline(never)]
pub fn non_zero_u32(g: &mut Rng) -> NonZeroU32 {
  g.non_zero_u32()
}

#[inline(never)]
pub fn non_zero_u64(g: &mut Rng) -> NonZeroU64 {
  g.non_zero_u64()
}

#[inline(never)]
pub fn non_zero_u128(g: &mut Rng) -> NonZeroU128 {
  g.non_zero_u128()
}

#[inline(never)]
pub fn f32(g: &mut Rng) -> f32 {
  g.f32()
}

#[inline(never)]
pub fn f64(g: &mut Rng) -> f64 {
  g.f64()
}

#[inline(never)]
pub fn biunit_f32(g: &mut Rng) -> f32 {
  g.biunit_f32()
}

#[inline(never)]
pub fn biunit_f64(g: &mut Rng) -> f64 {
  g.biunit_f64()
}

#[inline(never)]
pub fn byte_array_32(g: &mut Rng) -> [u8; 32] {
  g.byte_array()
}

#[inline(never)]
pub fn shuffle(g: &mut Rng, a: &mut [u32]) {
  g.shuffle(a)
}

#[cfg(feature = "rand_core")]
#[inline(never)]
pub fn fork(g: &mut Rng) -> Rng {
  <Rng as rand::SeedableRng>::fork(g)
}

#[cfg(feature = "rand_core")]
#[inline(never)]
pub fn try_fork(g: &mut Rng) -> Result<Rng, rand_core::Infallible> {
  <Rng as rand::SeedableRng>::try_fork(g)
}

#[inline(never)]
pub fn pcg_u64(g: &mut rand_pcg::Lcg128CmDxsm64) -> u64 {
  g.random()
}

#[inline(never)]
pub fn pcg_non_zero_u64(g: &mut rand_pcg::Lcg128CmDxsm64) -> NonZeroU64 {
  g.random()
}

#[inline(never)]
pub fn xoroshiro_u64(g: &mut rand_xoshiro::Xoroshiro128PlusPlus) -> u64 {
  g.random()
}

#[inline(never)]
pub fn xoroshiro_non_zero_u32(g: &mut rand_xoshiro::Xoroshiro128PlusPlus) -> NonZeroU32 {
  g.random()
}

#[inline(never)]
pub fn xoroshiro_non_zero_u64(g: &mut rand_xoshiro::Xoroshiro128PlusPlus) -> NonZeroU64 {
  g.random()
}

#[inline(never)]
pub fn xoroshiro_bounded_u64(g: &mut rand_xoshiro::Xoroshiro128PlusPlus, n: u64) -> u64 {
  g.random_range(0 ..= n)
}

#[inline(never)]
pub fn xoroshiro_bernoulli(g: &mut rand_xoshiro::Xoroshiro128PlusPlus, p: f64) -> bool {
  g.random_bool(p)
}