我在StackOverflow上找不到任何相关问题,并且不确定在Prolog中是否可行,但这是我的问题:
考虑到一系列限制,我可以期望Prolog提供大量的解决方案,这些解决方案可能要花费数小时,我可以选择不等待全套解决方案,而是选择“第一个”但随机的解决方案?
举一个非常小的例子,
between(0, 100, X), between(0, 100, Y), X+Y>100.
会立即给我一组可预测的X=1, Y=100; X=2, Y=100, X=3, Y=100
等。假设该示例要花几个小时来计算,有没有办法获得-例如35(用户参数)-随机排序的解决方案,例如{ {1}},等等?
距离我上次进行Prolog已经有一段时间了,所以我又回到了初学者的时代!
答案 0 :(得分:1)
您可以将call_nth / 2与random_between / 3结合使用:
?- random_between(1,8,X),call_nth(member(E,[1,2,3,4,5,6,7,8]),X).
X = E, E = 1.
?- random_between(1,8,X),call_nth(member(E,[1,2,3,4,5,6,7,8]),X).
X = E, E = 6.