randish_rs 0.1.0

Generate predictably random like numbers using LCG
Documentation
use crate::seed::Seed;

#[derive(Copy, Clone, PartialEq, Debug)]
pub struct LCGParams {
	pub c: u32,
	pub a: u32,
	pub m: u32,
	pub x0: u32
}

const DEFAULT_LCG_PARAMS: LCGParams = LCGParams {
	c: 2 * 117 + 1,
	a: 4 * 317 + 1,
	m: u32::pow(2, 31),
	x0: 0
};

pub fn number_to_params(n: u32) -> LCGParams {
	let mut s = Seed::new(DEFAULT_LCG_PARAMS, n);
	let m = u32::pow(2, 31);
	LCGParams {
		c: 2 * s.rand_uint(1, 3000) + 1,
		a: 4 * s.rand_uint(3000, 6000) + 1,
		m: m,
		x0: s.rand_uint(1, m)
	}
}