diff --git a/ocaml/out/samples b/ocaml/out/samples index 2abfdf3c..7eaaafb2 100755 Binary files a/ocaml/out/samples and b/ocaml/out/samples differ diff --git a/ocaml/out/samples.cmi b/ocaml/out/samples.cmi index a27e5b2b..5fc3eda9 100644 Binary files a/ocaml/out/samples.cmi and b/ocaml/out/samples.cmi differ diff --git a/ocaml/out/samples.cmx b/ocaml/out/samples.cmx index 6daf99ef..d46a1b32 100644 Binary files a/ocaml/out/samples.cmx and b/ocaml/out/samples.cmx differ diff --git a/ocaml/out/samples.o b/ocaml/out/samples.o index e6ff1b71..933b2026 100644 Binary files a/ocaml/out/samples.o and b/ocaml/out/samples.o differ diff --git a/ocaml/samples.ml b/ocaml/samples.ml index daa8438f..c7508c91 100644 --- a/ocaml/samples.ml +++ b/ocaml/samples.ml @@ -41,20 +41,19 @@ let sampleTo low high = let logstd = (loghigh -. loglow) /. (2.0 -. normal_95_ci_length ) in sampleLognormal logmean logstd -let (|>) x f = f x let mixture (samplers: (unit -> float) array) (weights: float array): float option = - match (Array.length samplers == Array.length weights) with - | false -> None - | true -> - let normalized_weights = normalizeXs weights in - let cumsummed_normalized_weights = cumsumXs normalized_weights in - let p = sampleZeroToOne () in - let chosenSamplerIndex = findIndex cumsummed_normalized_weights (fun x -> x < p) in - let sample = match chosenSamplerIndex with - | None -> None - | Some(i) -> Some(samplers.(i) ()) - in - sample + if (Array.length samplers == Array.length weights) + then None + else + let normalized_weights = normalizeXs weights in + let cumsummed_normalized_weights = cumsumXs normalized_weights in + let p = sampleZeroToOne () in + let chosenSamplerIndex = findIndex cumsummed_normalized_weights (fun x -> x < p) in + let sample = match chosenSamplerIndex with + | None -> None + | Some(i) -> Some (samplers.(i) ()) + in + sample let () = Random.init 1;