One of n lines in a file: Difference between revisions

m
m (aligned bullets, added whitespace before the TOC.)
Line 1,910:
=={{header|Rust}}==
{{libheader|rand}}
<lang rust>extern crate rand;
extern crate rand;
 
use rand::{Rng, thread_rng};
 
fn one_of_n<R: Rng>(rng: &mut rand::ThreadRngR, n: usize) -> usize {
(1..n).fold(0, |keep, cand|
match rng.next_f64() {
y if y < (1.0 / (cand + 1) as f64) => cand,
_ => keep
}
)
}
 
fn main() {
let mut dist = [0usize0_usize; 10];
let mut rng = rand::thread_rng();
 
for _ in 0..1_000_000 {
dist[let num = one_of_n(&mut rng, 10)] += 1;
dist[num] += 1;
}
 
println!("{:?}", dist);
}</lang>
}
</lang>
{{out}}
<pre>