[php/MySQL] Tirage au sort avec pondération
40 messages • Page 3 sur 3 • 1, 2, 3
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
ben le mysql c une ecriture disque...le table php c'est une ecriture ram, c'est pas du tout pareil en terme de perfs !
(et en cas de modification de force, j'ai qu'ne ligne a changer)
lui il change souvent les force des hamster soit dit en passant (en fonction de l'activité des hamsters sur le site (a) )
donc je pense que c'est mieux.
mais effectivement pour un cas ou on change pas souvent la force des hamsters, c'est mieux de plus utiliser mysql
il faudrai qu'il s'ammuse a faire des tests de perfs

(et en cas de modification de force, j'ai qu'ne ligne a changer)
lui il change souvent les force des hamster soit dit en passant (en fonction de l'activité des hamsters sur le site (a) )
donc je pense que c'est mieux.
mais effectivement pour un cas ou on change pas souvent la force des hamsters, c'est mieux de plus utiliser mysql
il faudrai qu'il s'ammuse a faire des tests de perfs
1 - 500
2 - 1000
3 - 2000
= 3500
si on divise par 500, on obient 7
sur 7 affichages on devrait avoir
une fois le 1
deux fois le 2
quatre fois le 3
on pourrait facilement coder un proof of concept :
tu rajoutes un champs ou tu incremente les selections et tu lances une boucle de 70, si tu obtiens
1 - 500 [10]
2 - 1000 [20]
3 - 2000 [40]
tu obtiendras aussi mon respect et toutes mes excuses
rog
2 - 1000
3 - 2000
= 3500
si on divise par 500, on obient 7
sur 7 affichages on devrait avoir
une fois le 1
deux fois le 2
quatre fois le 3
on pourrait facilement coder un proof of concept :
tu rajoutes un champs ou tu incremente les selections et tu lances une boucle de 70, si tu obtiens
1 - 500 [10]
2 - 1000 [20]
3 - 2000 [40]
tu obtiendras aussi mon respect et toutes mes excuses
rog
[LIEN MORT]
- Code: Tout sélectionner
$hamster[0]=500;
$hamster[1]=1000;
$hamster[2]=2000;
function poc($hamster)
{
$forcetotaledeshamster=3500;
$monrandom=rand (0,$forcetotaledeshamster);
$a=0;
$trouve=false;
while (!$trouve)
{
$monrandom-=$hamster[$a];
if ($monrandom<=0)
{
$trouve=true;
$result=$a;
}
$a++;
}
return $result;
}
$result[0]=0;
$result[1]=0;
$result[2]=0;
for ($aa=0;$aa<700;$aa++)
{
$result[poc($hamster)]++;
}
foreach ($result as $in=>$val)
{
echo $in." - ".$hamster[$in]." [".$val."]<br>";
}
Dernière édition par moktoipas le Mer Sep 03, 2008 23:08, édité 1 fois.
ça marche plutôt bien, je n'ai pas pu m'empêcher de le rogiser
rog
- Code: Tout sélectionner
error_reporting(E_ALL);
#
$hamster[0]=500;
$hamster[1]=1000;
$hamster[2]=2000;
$hamster[3]=2000;
$hamster[4]=500;
define('FORCE_HAMSTER',array_sum($hamster));
#
function poc($hamster){
#
$monrandom = rand(0,FORCE_HAMSTER);
$a = 0;
$trouve = false;
#
while(!$trouve)
{
$monrandom -= $hamster[$a];
#
if ($monrandom <= 0)
{
$trouve = true;
$result = $a;
}
$a++;
}
return $result;
}
#
$result = array();
#
for($i = 0; $i < count($hamster); $i++)
{
$result[$i] = 0;
}
#
for ($a = 0; $a < 800; $a++)
{
$result[poc($hamster)]++;
}
#
foreach ($result as $in=>$val)
{
echo $in." - ".$hamster[$in]." [".$val."]<br>";
}
rog
oups
comme ça au reveil c'est un peu agressif
ce qui me gênait dans ce concept c'est la totale dependance de la pertinence de la fonction rand(), le poc est très bien mais le comportement de la fonction à l'interieur d'une boucle n'est pas forcement le même que lorsqu'elle est lancée à intervalles irréguliers
j'ai donc fait un poc qui randomise les intervalles
la derivation de pertinence n'excede pas 20%
edit : a 1000 la derivation descend au dessous de 10%
re edit : resultat sur 6000 requêtes
pour obtenir une derivation de pertinence de 0 on devra tenir compte d'une statistique de selection dans l'algo
rog[/quote]
comme ça au reveil c'est un peu agressif
ce qui me gênait dans ce concept c'est la totale dependance de la pertinence de la fonction rand(), le poc est très bien mais le comportement de la fonction à l'interieur d'une boucle n'est pas forcement le même que lorsqu'elle est lancée à intervalles irréguliers
j'ai donc fait un poc qui randomise les intervalles
- Code: Tout sélectionner
error_reporting(E_ALL);
#
$sleep = rand(1,3);
sleep($sleep);
#
session_start();
#
if(!isset($_SESSION['loop']))
{
$_SESSION['hamster'][0] = 500;
$_SESSION['hamster'][1] = 1000;
$_SESSION['hamster'][2] = 2000;
$_SESSION['hamster'][3] = 2000;
$_SESSION['hamster'][4] = 500;
#
$_SESSION['result'][0] = 0;
$_SESSION['result'][1] = 0;
$_SESSION['result'][2] = 0;
$_SESSION['result'][3] = 0;
$_SESSION['result'][4] = 0;
#
$_SESSION['FORCE_HAMSTER'] = array_sum($_SESSION['hamster']);
$_SESSION['loop'] = 0;
}
#
$_SESSION['loop']++;
#
$_SESSION['result'][poc()]++;
#
$display = "<li> boucle n° : ".$_SESSION['loop'];
#
foreach ($_SESSION['result'] as $in=>$val)
{
$display .= "<br> hamster n° : ".($in + 1)." - force : ".$_SESSION['hamster'][$in]." cumul des requêtes : {$val} - derivation : ".pertinence($in)."<br>";
}
#
if($_SESSION['loop'] < 6000)
{
$display .= ("<SCRIPT LANGUAGE=\"JavaScript\"> document.location.href=\"".$_SERVER['PHP_SELF']."\"</script>");
}
echo($display);
flush();
#
# counter reset
#session_destroy();
#
##############################################################################################################
function poc(){
##############################################################################################################
$monrandom = rand(1,$_SESSION['FORCE_HAMSTER']);
$a = 0;
$trouve = false;
#
while(!$trouve)
{
$monrandom -= $_SESSION['hamster'][$a];
#
if ($monrandom <= 0)
{
$trouve = true;
$result = $a;
}
$a++;
}
return $result;
}
##############################################################################################################
function pertinence($index){
##############################################################################################################
#
$coef = $_SESSION['FORCE_HAMSTER'] / $_SESSION['loop'];
# cumul hamster réaligné
$realign = $_SESSION['result'][$index] * $coef;
#
$pertinence = round($realign / $_SESSION['hamster'][$index],2);
#
return $pertinence;
}
##############################################################################################################
la derivation de pertinence n'excede pas 20%
edit : a 1000 la derivation descend au dessous de 10%
re edit : resultat sur 6000 requêtes
boucle n° : 6000
hamster n° : 1 - force : 500 cumul des requêtes : 488 - derivation : 0.98
hamster n° : 2 - force : 1000 cumul des requêtes : 1003 - derivation : 1
hamster n° : 3 - force : 2000 cumul des requêtes : 1978 - derivation : 0.99
hamster n° : 4 - force : 2000 cumul des requêtes : 2057 - derivation : 1.03
hamster n° : 5 - force : 500 cumul des requêtes : 474 - derivation : 0.95
pour obtenir une derivation de pertinence de 0 on devra tenir compte d'une statistique de selection dans l'algo
rog[/quote]
40 messages • Page 3 sur 3 • 1, 2, 3
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Passage à l'heure d'été/hiver sur un forum phpBB
- Référencement : le problème des sessions des pages PHP
- Gestion des langues et des sessions en PHP / MySQL
- Annonces illustrées Google Adsense
- Google souhaite lever plus de 2 milliards de dollars
- 5 fans de VTT chez Google lancent le blog Google Earthlings
- WebRankInfo lance la publicité collaborative
- GoogleStats : analyse temps réel des visites de Google sur votre site
- Google sort la version française de Blogger
- CSV AdStats v4 : le logiciel pour analyser ses statistiques AdSense
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités



le forum