`random_variable`random_value`如何在SWI-Prolog的标签/ 2中起作用?

时间:2014-01-09 11:24:47

标签: swi-prolog clpfd

我已经看到可以通过向labeling/2添加以下选项,使用随机方法标记cplfd变量:

labeling([random_variable(N),random_value(M)],List). 

我认为MN应该是整数。但是,我无法在SWI-Prolog的文档页面中找到有关这些选项的任何信息。他们怎么用?

1 个答案:

答案 0 :(得分:0)

在CLP(FD)库中有:

selection(random_variable(Seed)) :-
        must_be(integer, Seed),
        set_random(seed(Seed)).

% TODO: random_variable and random_value currently both set the seed,
% so exchanging the options can yield different results.
order(random_value(Seed)) :-
        must_be(integer, Seed),
        set_random(seed(Seed)).

select_var(random_variable(_), Vars0, Var, Vars) :-
        length(Vars0, L),
        I is random(L),
        nth0(I, Vars0, Var),
        delete_eq(Vars0, Var, Vars).

因此,选项只会为随机生成的数字设置种子,但不清楚 random_value(N) random_variable(具有不同的值)的目的是什么? M)即可。