2014-10-29 54 views
1

我正在设计一个简单游戏的AI,我希望实现一个随机移动。但是这个运动必须满足游戏规则。Prolog在区间内连续绑定

选择随机整数可以用random_between/3完成,但变量绑定只发生一次。因此,如果我在绑定后检查规则,如果失败,该函数将返回false

我想用一个像between/3这样的随机整数来绑定一个变量:尝试一些值,并在失败的情况下,返回并尝试另一个绑定。但是between/3不是随机的。

有没有简单的方法来实现这个或类似的结果? (上SWI-Prolog的)

+1

@lurker来自SWI的'random_between/3'只能成功一次。需要Paulo的建议。 – 2014-10-29 00:33:00

+0

@SergeyDymchenko啊好的,我的错误。 – lurker 2014-10-29 00:54:39

回答

3

也许你可以写这样的:

?- repeat, random_between(1, 10, X). 
X = 6 ; 
X = 2 ; 
X = 9 ; 
X = 5 ; 
... 

只要确保你砍的选择点,你找到满意的答案后。

+0

令人尴尬的容易和作为一种魅力。谢谢! – VillasV 2014-10-29 00:46:31