ik wil graag random 3 deelsommen (staartdeling) met rest maken, maar regelmatig krijg ik niet meer dan 1 of 2.
mijn script is misschien wat omslachtig en is vast voor verbetering vatbaar.
Zou iemand kunnen helpen om mijn script goed te krijgen zodat ik 3 verschillende deelsommen krijg met een unieke uitkomst en rest?
Hier is het stuk script wat ik heb gemaakt:
<?
function in_array_r($needle, $haystack, $strict = false) {
foreach ($haystack as $item) {
if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
return true;
}
}
return false;
}
if (empty($_SESSION['opdracht'])) {
$_SESSION['opdracht'] = array();
$_SESSION['antwoorden'] = array();
$loop =1;
$aantal_sommen = 1;
if ($_GET['o'] == 1) { $max = 50; } elseif ($_GET['o'] == 2) { $max = 100; } else { $max = 250; }
while ($aantal_sommen <= 3 && $loop <= 500) {
$uitkomst = 0;
$loop2 = 1;
$somgemaakt = 0;
while (($somgemaakt == 0) && ($loop2 < 500)) {
$random_getal1 = rand($max/2, $max);
$random_getal2 = rand(2, $max/2);
if ($random_getal2 > $random_getal1) {
$apart = $random_getal1;
$random_getal1 = $random_getal2;
$random_getal2 = $apart;
}
$uitkomst = floor($random_getal1 / $random_getal2);
$restwaarde = $random_getal1 % $random_getal2;
if ($uitkomst != 0) {
if ($uitkomst != $restwaarde) {
if (in_array_r($uitkomst, $_SESSION['antwoorden']) == false ) {
if (in_array_r($restwaarde, $_SESSION['antwoorden']) == false ) {
array_push($_SESSION['antwoorden'], $uitkomst);
array_push($_SESSION['antwoorden'], $restwaarde);
array_push($_SESSION['opdracht'], array("getal1" => $random_getal1, "getal2" => $random_getal2, "antwoord" => $uitkomst, "rest" => $restwaarde));
}
$aantal_sommen++;
$somgemaakt = 1;
}
}
}
$loop2++;
}
$loop++;
}
shuffle ($_SESSION['antwoorden']);
}
?>