Nombres aleatoire php

Fermé
rachid - 25 août 2010 à 17:19
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 - 26 août 2010 à 16:45
Bonjour,

SVP comment générer 3 nombre aleatoirement en php entre (20,60) dont la sommes égale 100 ???
vous auriez pas une idée ???? merci


1 réponse

Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
25 août 2010 à 17:34
Bonjour,
$n1 = rand(20, 60);
$n2 = rand(20, 80-$n1);
$n3 = 100-$n1-$n2;

echo "n1 : $n1, n2 : $n2, n3 : $n3 | total : ".($n1+$n2+$n3);

2
AH merci Defouille c'est gentil ça à l'air facile, j'essaye de faire pour 8 nombre entre 50et 250 dont la sommes egale 1000 ??? ta pas uen idée stp !!!!
<?php

$n1 = rand(50, 250);
$n2 = rand(50, 300-$n1);
$n3 = rand(50, 350-$n1-$n2);
$n4 = rand(50, 400-$n1-$n2-$n3);
$n5 = rand(50, 450-$n1-$n2-$n3-$n4);
$n6 = rand(50, 500-$n1-$n2-$n3-$n4-$n5);
$n7 = rand(50, 550-$n1-$n2-$n3-$n4-$n5-$n6);

$n8 = 1000-$n1-$n2-$n3-$n4-$n5-$n6-$n7;


echo "n1 : $n1<br /> n2 : $n2<br /> n3 : $n3<br />n4 : $n4<br />n5 : $n5<br />n6 : $n6<br />n7 : $n7<br />n8 : $n8<br /> | total : ".($n1+$n2+$n3+$n4+$n5+$n6+$n7+$n8);

?>
0
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
26 août 2010 à 09:24
$n1 = rand(50, 250);
$n2 = rand(50, 250);
$n3 = rand(50, 250);

if($n1+$n2+$n3  > 550)
	$n4 = rand(50, 800-$n1-$n2-$n3);
else
	$n4 = rand(50, 250);

if($n1+$n2+$n3+$n4  > 600)
	$n5 = rand(50, 850-$n1-$n2-$n3-$n4);
elseif($n1+$n2+$n3+$n4  < 250)
	$n5 = rand(250-($n1+$n2+$n3+$n4), 250);
else
	$n5 = rand(50, 250);

if($n1+$n2+$n3+$n4+$n5  > 650)
	$n6 = rand(50, 900-$n1-$n2-$n3-$n4-$n5);
elseif($n1+$n2+$n3+$n4+$n5 < 500)
	$n6 = rand(500-($n1+$n2+$n3+$n4+$n5), 250);
else
	$n6 = rand(50, 250);	

if($n1+$n2+$n3+$n4+$n5+$n6  > 700)
	$n7 = rand(50, 950-$n1-$n2-$n3-$n4-$n5-$n6);
elseif($n1+$n2+$n3+$n4+$n5+$n6 < 750)
	$n7 = rand(750-($n1+$n2+$n3+$n4+$n5+$n6), 250);
else
	$n7 = rand(50, 250);

$n8 = 1000-$n1-$n2-$n3-$n4-$n5-$n6-$n7;

echo "n1 : $n1<br /> n2 : $n2<br /> n3 : $n3<br />n4 : $n4<br />n5 : $n5<br />n6 : $n6<br />n7 : $n7<br />n8 : $n8<br /> | total : ".($n1+$n2+$n3+$n4+$n5+$n6+$n7+$n8); 


Pour que cela soit vraiment aléatoire, l'idéal serait de choisir aléatoirement l'ordre ou tu traites les 8 nombres.
0
Merci defouille c'es gentil, pourrait-tu juste m'expliquer pk a ce que tu teste les 3 premier nombre avec 550 ??? comment ta trouvé 550 ?? ce n'est pas la moyenne des trois matrices non ??? STP
0
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
26 août 2010 à 10:27
J'ai fais plusieurs tests pour trouver mais la logique est la suivante,
à partir du 4 eme il est possible que tu ne puisses pas random n'importe quel nombre car par exemple si tu as les 3 premiers égal a 250, tu auras une somme de 750, et donc les 5 derniers devront faire 50, sinon tu dépassera ton total.

550 = 1000 - (250 + 4*50)
vue que le minimum est 50, si au bout du 3eme tu as plus de 550, il faut pas que le 4eme soit plus grand que 1000 - (250 + 4*50), sinon on est battu pour la somme.

Pour ceux d'apres c'est la même chose. Tu comprends ?
0
oui c'est clair, merci infiniment Defouille pour tes réponses c'est gentil. passe un bonne fin de journée
0