image au hasard

Eléphanteau du PHP | 20 Messages

26 janv. 2010, 23:52

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

Eléphant du PHP | 168 Messages

27 janv. 2010, 12:24

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...

Eléphanteau du PHP | 20 Messages

27 janv. 2010, 16:20

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

Eléphant du PHP | 86 Messages

27 janv. 2010, 16:24

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%.

ViPHP
AB
ViPHP | 5818 Messages

27 janv. 2010, 16:29

Pour générer un nombre aléatoire entre 1 et 100
$nb_aleatoire = mt_rand(0, 100);

Eléphant du PHP | 86 Messages

27 janv. 2010, 16:40

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
}

?>

Eléphant du PHP | 168 Messages

27 janv. 2010, 20:07

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...
Modifié en dernier par jojo1000 le 27 janv. 2010, 20:16, modifié 1 fois.

Eléphanteau du PHP | 20 Messages

27 janv. 2010, 20:14

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

Eléphant du PHP | 168 Messages

27 janv. 2010, 20:18

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"/>'; ?>

ViPHP
AB
ViPHP | 5818 Messages

27 janv. 2010, 20:41

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é :wink:
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 :)

Eléphanteau du PHP | 20 Messages

27 janv. 2010, 23:04

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

Eléphant du PHP | 86 Messages

27 janv. 2010, 23:14

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%.

ViPHP
ViPHP | 5462 Messages

27 janv. 2010, 23:25

	$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);

Eléphant du PHP | 86 Messages

27 janv. 2010, 23:29

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 :)

ViPHP
ViPHP | 5462 Messages

27 janv. 2010, 23:39

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 :mrgreen: