Jump to content

One of n lines in a file: Difference between revisions

added ocaml
(added ocaml)
Line 109:
 
Sample output:<pre>99470 99806 99757 99921 100213 100001 99778 100385 100081 100588</pre>
 
 
=={{header|OCaml}}==
 
<lang ocaml>let one_of_n n =
let rec aux i r =
if i >= n then r else
if (Random.float 1.0) < (1.0 /. float (i + 1))
then aux (succ i) i
else aux (succ i) r
in
aux 1 0
 
let test ~n ~trials =
let ar = Array.make n 0 in
for i = 0 to pred trials do
let d = one_of_n n in
ar.(d) <- succ ar.(d)
done;
Array.iter (Printf.printf " %d") ar;
print_newline ()
 
let () =
Random.self_init ();
test ~n:10 ~trials:1_000_000</lang>
 
Executing:
 
<pre>
$ ocamlopt -o one.opt one.ml
$ ./one.opt
100620 99719 99928 99864 99760 100151 99553 100529 99800 100076
</pre>
 
 
=={{header|Perl 6}}==
Cookies help us deliver our services. By using our services, you agree to our use of cookies.