omni_randomwalk/
random_cordinates.rs1use rand::Rng;
2
3pub fn random_cordinates_two_dim(steps: u64) -> Vec<[f64; 2]> {
4 let mut ran = rand::thread_rng();
5
6 let x_walk: Vec<u64> = (0..steps).map(|_| ran.gen_range(0..=1)).collect();
7 let y_walk: Vec<u64> = (0..steps).map(|_| ran.gen_range(0..=1)).collect();
8
9 let walk: &mut Vec<[f64; 2]> = &mut vec![[0.0, 0.0]];
10
11 for i in 0..steps as usize {
12 let x: u64 = x_walk[i];
13 let y: u64 = y_walk[i];
14
15 let step_before_x = walk[i][0];
16 let step_before_y = walk[i][1];
17
18 let new_step_x = step_before_x + bool_as_number(x);
19 let new_step_y = step_before_y + bool_as_number(y);
20
21 let new_step = [new_step_x, new_step_y];
22 walk.push(new_step)
23 }
24
25 walk.clone()
26}
27
28fn bool_as_number(value: u64) -> f64 {
29 if value == 1 {
30 1.0
31 } else {
32 -1.0
33 }
34}
35
36pub fn random_cordinates_one_dim(steps: u64) -> Vec<[f64; 2]> {
37 let mut ran = rand::thread_rng();
38
39 let x_walk: Vec<u64> = (0..steps).map(|_| ran.gen_range(0..=1)).collect();
40
41 let walk: &mut Vec<[f64; 2]> = &mut vec![[0.0, 0.0]];
42
43 for i in 0..steps as usize {
44 let x: u64 = x_walk[i];
45
46 let step_before_x = walk[i][0];
47
48 let new_step_x = step_before_x + bool_as_number(x);
49
50 let new_step = [new_step_x, 0.0];
51 walk.push(new_step)
52 }
53
54 walk.clone()
55}