Door
Sietsko Bos
op 05-10-2018 10:21
gewijzigd op 05-10-2018 10:28
1.885 views
Hoi,
ik ben bezig met een script die 4 series van 4 getallen random aanmaakt.
Alleen 1 serie moet oplopend gesorteerd worden, de andere 3 door elkaar.
Geen van de 4 serie getallen mag gelijk zijn.
Dit is wat ik tot dusver heb:
<?php
$_SESSION['opdracht'] = array();
for ($i=0; $i<=3; $i++) {
// maak 4 rijen met 4 getallen en stop die in de opdracht array
$nummers = range(1, 10);
shuffle($nummers);
$nummers = array_slice ($nummers, 0, 4);
Code-tags gebruiken tussen blokhaken, helpt. Zie ook de Veelgestelde Vragen op de site. De php-tag hierin is alleen bedoeld om naar functies te linken.
Mooi :)
<?php
$_SESSION['opdracht'] = array();
// zolang we nog niet genoeg elementen in ons array hebben
while(count($_SESSION['opdracht']) < 4) {
// maak random lijstje van 4 getallen
$nummers = range(1, 10);
shuffle($nummers);
$nummers = array_slice ($nummers, 0, 4);
// als array nog leeg is, dan is het de eerste serie, dus sortern:
if (!$_SESSION['opdracht']) {
sort ($nummers);
}
// alleen als nog niet aanwezig, dan toevoegen
// de eerste is sowieso niet aanwezig btw.
if(!is_array($nummers, $_SESSION['opdracht'])) {
array_push ($_SESSION['opdracht'], $nummers);
}
}
?>
Bedankt Ivo dit werkt prima.
Is het ook zo aan te passen dat de laatste 3 nooit oplopend zijn, dus alleen maar de eerste?
Dus mag bijvoorbeeld nooit: 1 - 3 - 5 - 9 zijn.
dat kan, maar dat is weer niet overeenkomstig met "random"
Want als je door toeval 4 getallen laat bepalen, kan dat prima "1,2,3,4" zijn.
Ik weet niet of het bij de lotto voorgekomen is, maar 6 of 7 cijfers opvolgorde kúnnen eruit komen.
Evenzo voor het geval het andere getallen zijn, maar toch oplopend.
Maar je zou kunnen toevoegen op regel 16
<?php
else {
$kopie = $nummers;
sort($kopie);
// zolang de gesorteerde kopie gelijk is aan de lijst nummer, doe husselen
while($kopie == $nummers) {
shuffle($nummers);
}
}
?>
Dank je Ivo, had ook inmiddels een soort oplossing, maar deze is stukken overzichtelijker.
Ziet er eigenlijk ook simpel uit zo, maar het bedenken is een ander verhaal.