Last active 1741880459

Revision 3cc19ff75820b017a20c0906c690590b09a3f496

e.rs Raw
1use std::time::Instant;
2use rand::prelude::*;
3use std::f64::consts;
4use console::Term;
5
6const MAX_LOOPS: u64 = 1000000;
7
8fn main() {
9 let mut total_count = 0;
10 let now = Instant::now();
11 let term = Term::stdout();
12 println!();
13 for i in 0..MAX_LOOPS {
14 let count = get_sum_count();
15 total_count += count;
16 if cfg!(show_msg) {
17 let average = total_count as f64 / i as f64;
18 let pererror = (average - consts::E).abs() / consts::E * 100.0;
19 let cur_percent = i as f64 / MAX_LOOPS as f64 * 100.0;
20 term.move_cursor_up(1).ok();
21 term.write_line(&format!(" {:6.10}\t{:.10}\t{:.2}% err\t{:.2}%", i, average, pererror, cur_percent)).ok();
22 }
23 //console.log(i.toString().padEnd(10), average.toString().padEnd(20), pererror.toString().padEnd(22), "%err", " ", " ", currentPercentage + "% complete");
24 }
25 let average = total_count as f64 / MAX_LOOPS as f64;
26 println!("---------------------------");
27 println!("Iterations: {}", MAX_LOOPS);
28 println!("Final Average: {}", average);
29 println!("Took: {:?}", now.elapsed())
30}
31
32fn get_sum_count() -> u64 {
33 let mut count: u64 = 0;
34 let mut sum: f64 = 0.0;
35 while sum <= 1.0 {
36 count += 1;
37 sum += rand::thread_rng().gen::<f64>();
38 }
39 //console.log("Count=" + currentCount + " | Sum: " + sum + " | i=" + i)
40 return count;
41}
42
43