Nombres aleatoire php

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

  1. 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);
    

    1. 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);

      ?>
    2. $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.
    3. 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
    4. 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 ?
    5. oui c'est clair, merci infiniment Defouille pour tes réponses c'est gentil. passe un bonne fin de journée