e.rs
· 1.4 KiB · Rust
Raw
use std::time::Instant;
use rand::prelude::*;
use std::f64::consts;
use console::Term;
const MAX_LOOPS: u64 = 1000000;
fn main() {
let mut total_count = 0;
let now = Instant::now();
let term = Term::stdout();
println!();
for i in 0..MAX_LOOPS {
let count = get_sum_count();
total_count += count;
if cfg!(show_msg) {
let average = total_count as f64 / i as f64;
let pererror = (average - consts::E).abs() / consts::E * 100.0;
let cur_percent = i as f64 / MAX_LOOPS as f64 * 100.0;
term.move_cursor_up(1).ok();
term.write_line(&format!(" {:6.10}\t{:.10}\t{:.2}% err\t{:.2}%", i, average, pererror, cur_percent)).ok();
}
//console.log(i.toString().padEnd(10), average.toString().padEnd(20), pererror.toString().padEnd(22), "%err", " ", " ", currentPercentage + "% complete");
}
let average = total_count as f64 / MAX_LOOPS as f64;
println!("---------------------------");
println!("Iterations: {}", MAX_LOOPS);
println!("Final Average: {}", average);
println!("Took: {:?}", now.elapsed())
}
fn get_sum_count() -> u64 {
let mut count: u64 = 0;
let mut sum: f64 = 0.0;
while sum <= 1.0 {
count += 1;
sum += rand::thread_rng().gen::<f64>();
}
//console.log("Count=" + currentCount + " | Sum: " + sum + " | i=" + i)
return count;
}
1 | use std::time::Instant; |
2 | use rand::prelude::*; |
3 | use std::f64::consts; |
4 | use console::Term; |
5 | |
6 | const MAX_LOOPS: u64 = 1000000; |
7 | |
8 | fn 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 | |
32 | fn 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 |