Page 1 sur 2
image au hasard
Posté : 26 janv. 2010, 23:52
par warmup
Bonjour,
Je recherche un code en php qui me permet d'avoir un swf au hasard a chaque changement de page
et si possible de donner une probabilité pour chaque image.
càd: J'ai 4 fichier swf dans un dosier et je voudrais par exemple que fichier 1.swf aie une probabilité d'aparaitre de 50%, le fichier 3.swf 68% et ainsi de suite...
Pouvez vous m'aider je suis perdus
Merci infiniment
cordialement
Re: image au hasard
Posté : 27 janv. 2010, 12:24
par jojo1000
Tiré un nombre au sort entre 1 et 100
si nombre entre 1 et 50
afficher 1.swf
fin si
si nombre entre 50 et 70
afficher 2.swf
fin si ect...
Re: image au hasard
Posté : 27 janv. 2010, 16:20
par warmup
Merci jojo1000
pour la réponse mais étant novice en php pouvez vous me dire ou je pourrais avoir l'exemple d'un tel code
Merci encore pour votre aide
Re: image au hasard
Posté : 27 janv. 2010, 16:24
par Skikit
Salut
La solution de jojo n'est pas correcte... elle donne en effet 50% de chance d'afficher 1.swf mais cela signifie que tous les autres n'auront pas plus de 50% de chance de s'afficher (100-50 : Oups il reste plus que 50 alors qu'il faut 68).
Cependant, jojo a raison sur un point, tu dois redéfinir tes pourcentages afin d'avoir un total de 100%.
Re: image au hasard
Posté : 27 janv. 2010, 16:29
par AB
Pour générer un nombre aléatoire entre 1 et 100
$nb_aleatoire = mt_rand(0, 100);
Re: image au hasard
Posté : 27 janv. 2010, 16:40
par Skikit
Tu peux te servir de quelque chose comme ça (code facilement compréhensible) mais je vais te laisser chercher pour ce qui est de l'affichage des swf
<?php
//Probabilités
$p1 = 50;
$p2 = 10;
$p3 = 35;
$p4 = 5;
$r = mt_rand(1,100);
if($r <= $p1)
{
//afficher sw1
}
if($r > $p1 and $r <= ($p1+$p2))
{
//afficher swf2
}
if($r > ($p1+$p2) and $r <= ($p1+$p2+$p3))
{
//afficher swf3
}
if($r > ($p1+$p2+$p3))
{
//afficher swf4
}
?>
Re: image au hasard
Posté : 27 janv. 2010, 20:07
par jojo1000
Salut
La solution de jojo n'est pas correcte... elle donne en effet 50% de chance d'afficher 1.swf mais cela signifie que tous les autres n'auront pas plus de 50% de chance de s'afficher (100-50 : Oups il reste plus que 50 alors qu'il faut 68).
Je ne suis pas mathématicien
Et peut-être que je me trompe mais je vois pas d'image qui s'affiche avec 68% de chances dans ton code?
Sinon, parfait la syntaxe...
Re: image au hasard
Posté : 27 janv. 2010, 20:14
par warmup
Merci infiniment pour le code, j'ai procéder comme suit pour appeler mes fichier swf
<?php
//Probabilités
$p1 = 50;
$p2 = 10;
$p3 = 35;
$p4 = 5;
$r = mt_rand(1,100);
if($r <= $p1)
{
include("p1.swf"); //afficher sw1
}
if($r > $p1 and $r <= ($p1+$p2))
{
include("g1.swf"); //afficher swf2
}
if($r > ($p1+$p2) and $r <= ($p1+$p2+$p3))
{
include("g2.swf"); //afficher swf3
}
if($r > ($p1+$p2+$p3))
{
include("g5.swf"); //afficher swf4
}
?>
mais je rencontre un étrange problème, j'ai une page blanche avec 3 point d'interrogation
cordialement
Re: image au hasard
Posté : 27 janv. 2010, 20:18
par jojo1000
je connais pas bien les standards du web, mais essaye d'afficher tes swf dans une balise image
<img src="chemin.swf"/>
en php : <?php echo '<img src="chemin.swf"/>'; ?>
Re: image au hasard
Posté : 27 janv. 2010, 20:41
par AB
càd: J'ai 4 fichier swf dans un dosier et je voudrais par exemple que fichier 1.swf aie une probabilité d'aparaitre de 50%, le fichier 3.swf 68% et ainsi de suite...
Pouvez vous m'aider je suis perdus
Merci infiniment
cordialement
M'étonne pas que tu sois perdu, déjà rien qu'avec deux fichier tu es déjà à 118%. On peut pas dépasser 100% en probabilité
La solution de jojo n'est pas correcte... elle donne en effet 50% de chance d'afficher 1.swf mais cela signifie que tous les autres n'auront pas plus de 50% de chance de s'afficher (100-50 : Oups il reste plus que 50 alors qu'il faut 68).
Ben si elle est correcte pour la même raison que je viens d'énoncer plus haut.
D'ailleurs comme l'a fait remarquer
jojo1000 le code que tu as fait par la suite contredit ton explication et heureusement sinon il aurait été faux

Re: image au hasard
Posté : 27 janv. 2010, 23:04
par warmup
Voici le code qui fonctionne:
<?php
//Probabilités
$p1 = 80;
$p2 = 10;
$p3 = 5;
$p4 = 5;
$r = mt_rand(1,100);
if($r <= $p1)
{
include("p1.html"); //afficher sw1
}
if($r > $p1 and $r <= ($p1+$p2))
{
include("g1.html"); //afficher swf2
}
if($r > ($p1+$p2) and $r <= ($p1+$p2+$p3))
{
include("g2.html"); //afficher swf3
}
if($r > ($p1+$p2+$p3))
{
include("g5.html"); //afficher swf4
}
?>
mais il n'y a que l'include g1.html qui s'affiche
j'ai pourtant essayer en faisant un echo $r et sa montre bien que le % change a chaque changement de page.
Pourquoi juste l'include g1.html j"ai beau chercher le problème sans trouver là suis perdu.
pour répondre a jojo1000 j'ai essayer la balise img ne fait pas apparaitre le swf mais c'est bien gentil pour l'astuce
Re: image au hasard
Posté : 27 janv. 2010, 23:14
par Skikit
Et la suite de mon message vous l'avez lu ? ^^
Cependant, jojo a raison sur un point, tu dois redéfinir tes pourcentages afin d'avoir un total de 100%.
Re: image au hasard
Posté : 27 janv. 2010, 23:25
par stealth35
$p1 = 80;
$p2 = 10;
$p3 = 5;
$p4 = 5;
$array = array('1' => 0, '2' => 0, '3' => 0, '4' => 0);
for($i = 0; $i < 100000; $i++)
{
$r = mt_rand(1,100);
if($r <= 5)
{
++$array[4];
}
if($r > 5 && $r <= 10)
{
++$array[3];
}
if($r > 10 && $r <= 20)
{
++$array[2];
}
if($r > 20)
{
++$array[1];
}
}
print_r($array);
Re: image au hasard
Posté : 27 janv. 2010, 23:29
par Skikit
C'est sûr c'est beaucoup plus propre stealth mais warmup a précisé qu'il était novice... à mon avis il ne comprend pas grand chose à ta boucle

Re: image au hasard
Posté : 27 janv. 2010, 23:39
par stealth35
C'est sûr c'est beaucoup plus propre stealth mais warmup a précisé qu'il était novice... à mon avis il ne comprend pas grand chose à ta boucle

y'a rien a comprendre c'est juste un script vite fait pour des stats
