Eh bien, j'ai du mal à travailler avec prolog (gprolog). Mon problème est le suivant, j'ai le prochain prédicat:prolog, une forme conditionnelle
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.
qui est Facta ont 50% de probabilité de se produire, factB 30%, et enfin 20% des non des faits se produire. Aussi j'ai d'autres prédicat où changer le factB mais pas factA, change aussi les intervalles X.
Maintenant, j'ai foncteur:
result(X,Y,N):- random(1,100,I),
prob(X,Y,I,N).
ce prédicat dit ce qui est N pour X un Y en prob. Ce prédicat traiter le cas:
result(factA,factB,N).
mais maintenant je dois gérer:
result(factB,factA,N).
et il retournera un résultat valable, une idée ?, je l'ai fait quelque chose comme ceci:
result(X,Y,N):- Y = factA,
random(1,100,I),
prob(Y,X,I,N).
J is 100-I,
prob(Y,X,J,N).
mais cela ne gère pas bien le résultat 'none'.
Quelqu'un a une idée?
Merci!
Veuillez corriger le formatage, c'est difficile à lire comme ça. En particulier, indentez tout le code de 4 espaces: cela préservera les lignes de fin et le définira en monospace. – Amadan
Vos probabilités sont-elles liées aux positions ou aux identités de fait? C'est à dire. Dans votre exemple de 'result (factB, factA, N)', lequel voulez-vous avoir 50%: 'factA' ou' factB'? Ou permettez-moi de reformuler cela: est 'result' va toujours retourner 50% pour' first', 30% pour 'second' et 20% pour' none', ou est-ce 50% pour 'factA' en position X ou Y, 30% pour 'factB' (en position X ou Y) et 20% pour' none'? Par votre dernier extrait, je dirais le dernier? – Amadan
J'ai refait le formatage, mais je n'ai rien changé d'autre: on dirait que vous avez un. où vous devriez avoir un, dans la troisième dernière ligne de votre dernière clause: "prob (Y, X, I, N)." –