Skip to content

Commit 1579c6c

Browse files
committed
Refactored number generator
1 parent 666f464 commit 1579c6c

File tree

4 files changed

+35
-6
lines changed

4 files changed

+35
-6
lines changed

drone-lab/src/controller/simulation_controller.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ impl<'a> SimulationController<'a> {
1313
for i in 0..drone_count {
1414
let model = DRONE_MODELS[get_random_number(DRONE_MODELS.len())];
1515
self.drones.push(Drone {
16-
id: 1,
16+
id: i as u32,
1717
energy_level: 100.0,
1818
model,
1919
is_alive: true,
2020
location: Location {
21-
x: 0.0,
22-
y: 0.0,
23-
z: 0.0,
21+
x: get_random_between(1, 100) as f32,
22+
y: get_random_between(1, 100) as f32,
23+
z: get_random_between(1, 100) as f32,
2424
caption: "",
2525
},
2626
})

drone-lab/src/data/generator.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,19 @@ pub fn get_random_number(max: usize) -> usize {
99

1010
if max == 0 { 0 } else { nanos % max }
1111
}
12+
13+
pub fn get_random_between(min: usize, max: usize) -> usize {
14+
if min > max {
15+
panic!("Min must be less than or equal to Max");
16+
}
17+
18+
let duration = SystemTime::now()
19+
.duration_since(UNIX_EPOCH)
20+
.expect("Error at duration calculation");
21+
22+
let nanos = duration.subsec_nanos() as usize;
23+
let range = max - min + 1;
24+
25+
min + (nanos % range)
26+
}
27+

drone-lab/src/main.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use data::{DRONE_MODELS, get_random_number};
1+
use data::{DRONE_MODELS, get_random_between, get_random_number};
22

33
mod controller;
44
mod data;
@@ -17,4 +17,9 @@ fn main() {
1717
let max_value = DRONE_MODELS.len();
1818
println!("{}", DRONE_MODELS[get_random_number(max_value)]);
1919
}
20+
21+
for _ in 0..10 {
22+
let number = get_random_between(10, 100);
23+
println!("{number}");
24+
}
2025
}

drone-lab/src/tests/generator_tests.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#[cfg(test)]
22
mod test {
3-
use crate::data::{DRONE_MODELS, get_random_number};
3+
use crate::data::{DRONE_MODELS, get_random_between, get_random_number};
44

55
#[test]
66
fn random_drone_model_test() {
@@ -13,4 +13,12 @@ mod test {
1313
.any(|m| m.to_string() == model.to_string())
1414
);
1515
}
16+
17+
#[test]
18+
fn random_number_between_range_test() {
19+
let min_value = 10;
20+
let max_value = 50;
21+
let actual = get_random_between(min_value, max_value);
22+
assert!(actual >= min_value && actual <= max_value);
23+
}
1624
}

0 commit comments

Comments
 (0)