File tree Expand file tree Collapse file tree 4 files changed +35
-6
lines changed
Expand file tree Collapse file tree 4 files changed +35
-6
lines changed Original file line number Diff line number Diff 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 } )
Original file line number Diff line number Diff 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+
Original file line number Diff line number Diff line change 1- use data:: { DRONE_MODELS , get_random_number} ;
1+ use data:: { DRONE_MODELS , get_random_between , get_random_number} ;
22
33mod controller;
44mod 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}
Original file line number Diff line number Diff line change 11#[ cfg( test) ]
22mod 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}
You can’t perform that action at this time.
0 commit comments