omni-randomwalk 0.0.3

omni-randomwalk
Documentation
use rand::Rng;

pub fn random_cordinates_two_dim(steps: u64) -> Vec<[f64; 2]> {
    let mut ran = rand::thread_rng();

    let x_walk: Vec<u64> = (0..steps).map(|_| ran.gen_range(0..=1)).collect();
    let y_walk: Vec<u64> = (0..steps).map(|_| ran.gen_range(0..=1)).collect();

    let walk: &mut Vec<[f64; 2]> = &mut vec![[0.0, 0.0]];

    for i in 0..steps as usize {
        let x: u64 = x_walk[i];
        let y: u64 = y_walk[i];

        let step_before_x = walk[i][0];
        let step_before_y = walk[i][1];

        let new_step_x = step_before_x + bool_as_number(x);
        let new_step_y = step_before_y + bool_as_number(y);

        let new_step = [new_step_x, new_step_y];
        walk.push(new_step)
    }

    walk.clone()
}

fn bool_as_number(value: u64) -> f64 {
    if value == 1 {
        1.0
    } else {
        -1.0
    }
}

pub fn random_cordinates_one_dim(steps: u64) -> Vec<[f64; 2]> {
    let mut ran = rand::thread_rng();

    let x_walk: Vec<u64> = (0..steps).map(|_| ran.gen_range(0..=1)).collect();

    let walk: &mut Vec<[f64; 2]> = &mut vec![[0.0, 0.0]];

    for i in 0..steps as usize {
        let x: u64 = x_walk[i];

        let step_before_x = walk[i][0];

        let new_step_x = step_before_x + bool_as_number(x);

        let new_step = [new_step_x, 0.0];
        walk.push(new_step)
    }

    walk.clone()
}