Elimination de certaines valeurs du random afin d'augmenter la proba que le tirage marche au premier essai

master
Gnieark 9 years ago
parent 7deb1a660a
commit a9ab705be9

@ -15,7 +15,20 @@ function shikakugen($largeur,$hauteur,$nbeCarres){
//tirer en random l'aire de chaque carré
$aireRestante=$largeur * $hauteur;
for($i=1;$i<$nbeCarres;$i++){
$aire=rand(2,$aireRestante - $nbeCarres + $i);
$aireOK=false;
while($aireOK==false){
$aire=rand(2,$aireRestante - $nbeCarres + $i);
//on va éliminer quelques valeurs.
$aireOK=true;
if((in_array($aire,array(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97)))
&& ($aire>$largeur)
&& ($aire>$hauteur)){
//c'est un nombre premier don le seul carré posssible aura un coté =1 et l'autre coté= aire. si ce dernier coté est supérieur
//aux cotés de la grille, on ne pourra jamais le placer.
$aireOK=false;
}
}
$aireParCarre[]=$aire;
$aireRestante=$aireRestante-$aire;
$diviseurs[$aire]=trouveDiviseurs($aire);

Loading…
Cancel
Save