time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

commit 4c4d053ab9b0b56a082ca1431fabbf3eceedbda6
parent 3950946d6847223dea45c2f43a4bcd04cecae1da
Author: NunoSempere <nuno.sempere@protonmail.com>
Date:   Sun, 15 Oct 2023 00:44:20 +0100

print mean at the end

Diffstat:
Mocaml/out/samples | 0
Mocaml/out/samples.cmi | 0
Mocaml/out/samples.cmx | 0
Mocaml/out/samples.o | 0
Mocaml/samples.ml | 20++++++++++++++++++--
5 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/ocaml/out/samples b/ocaml/out/samples Binary files differ. diff --git a/ocaml/out/samples.cmi b/ocaml/out/samples.cmi Binary files differ. diff --git a/ocaml/out/samples.cmx b/ocaml/out/samples.cmx Binary files differ. diff --git a/ocaml/out/samples.o b/ocaml/out/samples.o Binary files differ. diff --git a/ocaml/samples.ml b/ocaml/samples.ml @@ -4,15 +4,18 @@ let normal_95_ci_length = 1.6448536269514722 (* List manipulation helpers *) let sumFloats xs = List.fold_left(fun acc x -> acc +. x) 0.0 xs + let normalizeXs xs = let sum_xs = sumFloats xs in List.map(fun x -> x /. sum_xs) xs + let cumsumXs xs = let _, cum_sum = List.fold_left(fun (sum, ys) x -> let new_sum = sum +. x in new_sum, ys @ [new_sum] ) (0.0, []) xs in cum_sum + let rec nth xs (n: int) = match xs with | [] -> None @@ -31,6 +34,15 @@ let findIndex xs test = in recursiveHelper xs 0 +let rec unwind xs = + match xs with + | Some(y) :: ys -> ( + match unwind ys with + | Some(zs) -> Some(y :: zs) + | None -> None + ) + | None :: ys -> None + (* Basic samplers *) let sampleZeroToOne () : float = Random.float 1.0 @@ -81,5 +93,9 @@ let () = let sampler () = mixture [ sample0; sample1; sampleFew; sampleMany ] weights in let n = 1_000_000 in let samples = List.init n (fun _ -> sampler ()) in - (* let mean = sumFloats samples /. n in *) - Printf.printf "Hello world\n" + match unwind samples with + | None -> Printf.printf "error" + | Some(xs) -> ( + let mean = sumFloats xs /. float_of_int(n) in + Printf.printf "Mean: %f" mean + )