%% ce qu'il faut pour générer au hasard %% c'est le fichier "hasard.pro" % tirage au sort via un générateur congruentiel lin/eaire % donne X un nombre reel dans [0,1) % dans Sicstus Prolog, on a déjà quelques primitives: %:- use_module(library(random)). %hasard(X) :- random(X). % sinon voici une methode au long qui utilise la base de données % pour garder l'état du générateur %hasard(X):- % retract(germe_hasard(X1)), X2 is (X1*824) mod 10657, % assert(germe_hasard(X2)), X is X2/10657.0 . % donne X un nombre entier dans [1,N] %hasard(N,X) :- % hasard(Y), % X is integer(floor(N*Y))+1. % initialisation du germe (à la consultation du fichier) % pour Sicstus %:- use_module(library(system)). %:- datime(datime(Year,Month,Day,Hour,Min,Sec)),pid(Pid), % setrand(rand(Pid,Min,Sec)). %:- abolish(germe_hasard,1), X is floor(cputime*1000), % assert(germe_hasard(X)). %%% Pour SWI on se base sur %%% random(IntExpr) est une fonction qui retourne un 0<= entier