rutie 0.14.0

The tie between Ruby and Rust.
use crate::{
    rubysys::random,
    types::{c_long, c_ulong, Value},
};

pub fn genrand_int32() -> u32 {
    unsafe { random::rb_genrand_int32() as u32 }
}

pub fn genrand_real() -> f64 {
    unsafe { random::rb_genrand_real() }
}

pub fn genrand_ulong_limited(limit: c_ulong) -> c_ulong {
    unsafe { random::rb_genrand_ulong_limited(limit) }
}

pub fn reset_seed() {
    unsafe { random::rb_reset_random_seed() }
}

pub fn int32(rng: Value) -> u32 {
    unsafe { random::rb_random_int32(rng) as u32 }
}

pub fn real(rng: Value) -> f64 {
    unsafe { random::rb_random_real(rng) }
}

pub fn ulong_limited(rng: Value, limit: c_ulong) -> c_ulong {
    unsafe { random::rb_random_ulong_limited(rng, limit) }
}

pub fn bytes(rng: Value, len: c_long) -> Value {
    unsafe { random::rb_random_bytes(rng, len) }
}

pub fn int_pair_to_real(a: u32, b: u32, exclude_one: bool) -> f64 {
    unsafe { random::rb_int_pair_to_real(a, b, exclude_one as _) }
}