From: Markus Triska Date: Sun, 8 Dec 2024 20:21:05 +0000 (+0100) Subject: introduce and use weighted_maybe/2 X-Git-Tag: v0.10.0~95^2 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=abe1f37167b1f43637e64854d62410327c3e48c6;p=scryer-prolog.git introduce and use weighted_maybe/2 Many thanks to @hurufu for the very nice definition! This is until library(random) provides this functionality, and a good name is found for it. See #2670. --- diff --git a/src/lib/clpb.pl b/src/lib/clpb.pl index a20694d0..7cf9e803 100644 --- a/src/lib/clpb.pl +++ b/src/lib/clpb.pl @@ -1550,11 +1550,15 @@ random_bindings(VNum, Node) --> { node_var_low_high(Node, Var, Low, High), bdd_count(Node, VNum, Total), bdd_count(Low, VNum, LCount) }, - ( { maybe(LCount, Total) } -> + ( { weighted_maybe(LCount, Total) } -> [Var=0], random_bindings(VNum, Low) ; [Var=1], random_bindings(VNum, High) ). +weighted_maybe(K, N) :- + random_integer(0, N, X), + X < K. + /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Find solutions with maximum weight. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */