Par hasard, nouvelle formule

Messieurs,

J'utilise le critère {par hasard} pour tirer au sort une brève. Au début,
comme un autre internaute au début de ce mois, j'ai cru que cette fonction ne
marchait pas. Après examen du code de SPIP et du SQL généré, il apparaît
plutôt qu'elle ne remplit pas bien son office dans certains cas limite,
notamment lorsque les éléments sont proches et peu nombreux.

Je propose de remplacer la ligne 492 de inc-calcul-squel.php3 (version 1.7.2)
de la manière suivante :
< $req_select = "MOD($table.$id_objet * UNIX_TIMESTAMP(), 32767) &
UNIX_TIMESTAMP() AS alea";

$req_select = "COS($table.$id_objet * UNIX_TIMESTAMP()) * 32767 AS alea";

On pourra modifier le paramètre de COS pour obtenir des effets différents,
mais dans l'idée, étant données les contraintes du problème, COS me paraît une
meilleure fonction que le "et logique bit à bit" (dans les conditions du
problème, la fonction MOD(x*a) peut être considéré comme une fonction
strictement croissante qui n'ajoute donc pas de "hasard").

Cordialement,

Francis PALLINI
ECILIA - Ingénieur INSA Lyon
Tél : 04.78.68.46.23
Fax : 04.37.43.69.01

Bjr,

une remarque : que se passe t il si le serveur n'est pas une machine Unix ?
(avec la formule actuelle ET avec celle que tu proposes)
De toute façon merci pour cette proposition, que j'essaierai si j'en ai le
temps,

Franck
----- Original Message -----
From: "Francis PALLINI" <francis.pallini@ecilia.fr>
To: <spip@rezo.net>
Sent: Saturday, August 14, 2004 11:53 AM
Subject: [Spip] Par hasard, nouvelle formule

Messieurs,

J'utilise le critère {par hasard} pour tirer au sort une brève. Au début,
comme un autre internaute au début de ce mois, j'ai cru que cette fonction
ne
marchait pas. Après examen du code de SPIP et du SQL généré, il apparaît
plutôt qu'elle ne remplit pas bien son office dans certains cas limite,
notamment lorsque les éléments sont proches et peu nombreux.

Je propose de remplacer la ligne 492 de inc-calcul-squel.php3 (version
1.7.2)
de la manière suivante :
< $req_select = "MOD($table.$id_objet * UNIX_TIMESTAMP(), 32767) &
UNIX_TIMESTAMP() AS alea";

$req_select = "COS($table.$id_objet * UNIX_TIMESTAMP()) * 32767 AS

alea";

On pourra modifier le paramètre de COS pour obtenir des effets différents,
mais dans l'idée, étant données les contraintes du problème, COS me paraît
une
meilleure fonction que le "et logique bit à bit" (dans les conditions du
problème, la fonction MOD(x*a) peut être considéré comme une fonction
strictement croissante qui n'ajoute donc pas de "hasard").

Cordialement,

Francis PALLINI
ECILIA - Ingénieur INSA Lyon
Tél : 04.78.68.46.23
Fax : 04.37.43.69.01

----------------------------------------------------------------------------
----

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip

Franck Saint Germain wrote:

Bjr,

une remarque : que se passe t il si le serveur n'est pas une machine Unix ?
(avec la formule actuelle ET avec celle que tu proposes)
De toute façon merci pour cette proposition, que j'essaierai si j'en ai le
temps,

Franck
----- Original Message ----- From: "Francis PALLINI" <francis.pallini@ecilia.fr>
To: <spip@rezo.net>
Sent: Saturday, August 14, 2004 11:53 AM
Subject: [Spip] Par hasard, nouvelle formule

Messieurs,

J'utilise le critère {par hasard} pour tirer au sort une brève. Au début,
comme un autre internaute au début de ce mois, j'ai cru que cette fonction
ne
marchait pas. Après examen du code de SPIP et du SQL généré, il apparaît
plutôt qu'elle ne remplit pas bien son office dans certains cas limite,
notamment lorsque les éléments sont proches et peu nombreux.

Je propose de remplacer la ligne 492 de inc-calcul-squel.php3 (version
1.7.2)
de la manière suivante :
< $req_select = "MOD($table.$id_objet * UNIX_TIMESTAMP(), 32767) &
UNIX_TIMESTAMP() AS alea";

$req_select = "COS($table.$id_objet * UNIX_TIMESTAMP()) * 32767 AS

alea";

On pourra modifier le paramètre de COS pour obtenir des effets différents,
mais dans l'idée, étant données les contraintes du problème, COS me paraît
une
meilleure fonction que le "et logique bit à bit" (dans les conditions du
problème, la fonction MOD(x*a) peut être considéré comme une fonction
strictement croissante qui n'ajoute donc pas de "hasard").

Cordialement,

Francis PALLINI

Pour discuter de modidifications du noyau, il faut s'adresser à la liste spip-dev ou spip-lab (ou spip-core ?), cf Listes de diffusion sur listes.rezo.net

--

Olivier G.
http://talath.no-ip.info/~carmine/blog/dotclear/index.php/