Ну, мне трудно работать с прологом (gprolog).Моя проблема заключается в следующем: у меня следующий предикат:
prob(factA,factB,X,first):- X=<50.
prob(factA,factB,X,second):- X>50,X=<80.
prob(factA,factB,X,none):- X>80,X=<100.
, то есть факт A имеет 50% вероятности возникновения, факт B 30% и, наконец, 20% не фактов происходят.Также у меня есть другие предикаты, где меняют факт B, но не факт A, также меняются интервалы X.
Теперь у меня есть функтор:
result(X,Y,N):- random(1,100,I),
prob(X,Y,I,N).
, этот предикат говорит, что N для X иY в проб.Этот предикат обрабатывает случай:
result(factA,factB,N).
, но теперь мне нужно обработать:
result(factB,factA,N).
, и он вернет верный результат, понимаете? Я сделал что-то вроде этого:
result(X,Y,N):- Y = factA,
random(1,100,I),
prob(Y,X,I,N).
J is 100-I,
prob(Y,X,J,N).
но это не помогает "нет" результата.
У кого-нибудь есть идеи?
Спасибо!