whyme_string_randomiser 0.1.0

feeds a string as input seed and returns n random numbers in the given range
Documentation
/*!
# String Randomiser
This crate has utility functions to generate random numbers from a string `seed`
*/

use rand::{
    distributions::{uniform::SampleUniform, Uniform},
    prelude::*,
};
use rand_pcg::Pcg64;
use rand_seeder::Seeder;
use std::ops::Range;

/**
feeds a string as input seed and returns n random numbers in the given range

# Examples

```
use string_randomiser::get_seeded_random;

let range = 0..10;
let n = 5;
let seed = "hello";

let random_numbers = get_seeded_random(seed, range, n);
println!("{:?}", random_numbers); // [7, 0, 4, 1, 3]
assert_eq!(random_numbers, vec![7, 0, 4, 1, 3]);
```
*/
pub fn get_seeded_random<T>(seed: &str, range: Range<T>, n: usize) -> Vec<T>
where
    T: PartialOrd<T> + SampleUniform,
{
    let mut rng: Pcg64 = Seeder::from(seed).make_rng();
    let uniform = Uniform::new(range.start, range.end);

    uniform.sample_iter(&mut rng).take(n).collect()
}
pub use string_operations::get_random_char;

pub mod string_operations;