From abe1f37167b1f43637e64854d62410327c3e48c6 Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Sun, 8 Dec 2024 21:21:05 +0100 Subject: [PATCH] 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. --- src/lib/clpb.pl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lib/clpb.pl b/src/lib/clpb.pl index a20694d03..7cf9e803b 100644 --- a/src/lib/clpb.pl +++ b/src/lib/clpb.pl @@ -1550,11 +1550,15 @@ { 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. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */