maak 4 random rijen met 4 nummers

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sietsko Bos

Sietsko Bos

05/10/2018 10:21:28
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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);
        
    if ($i == 0) { sort ($nummers); }
        
    array_push ($_SESSION['opdracht'], $nummers);
}

?>
Gewijzigd op 05/10/2018 10:28:23 door Sietsko Bos
 
PHP hulp

PHP hulp

30/09/2022 20:51:25
 
- Ariën  -
Beheerder

- Ariën -

05/10/2018 10:23:00
Quote Anchor link
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 :)
Gewijzigd op 05/10/2018 10:25:49 door - Ariën -
 
- SanThe -

- SanThe -

05/10/2018 10:40:46
Quote Anchor link
En wat is nu de vraag?
 
Sietsko Bos

Sietsko Bos

05/10/2018 11:24:53
Quote Anchor link
Wie kan me helpen het stukje php zo aan te passen dat het doet wat erboven in de tekst staat.
 
Ivo P

Ivo P

05/10/2018 13:27:15
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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);
    }

}

?>
Gewijzigd op 05/10/2018 13:28:38 door Ivo P
 
Sietsko Bos

Sietsko Bos

05/10/2018 13:55:07
Quote Anchor link
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.
Gewijzigd op 05/10/2018 13:55:48 door Sietsko Bos
 
Ivo P

Ivo P

05/10/2018 16:15:21
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
   else {
       $kopie = $nummers;
       sort($kopie);
       // zolang de gesorteerde kopie gelijk is aan de lijst nummer, doe husselen
       while($kopie == $nummers) {
          shuffle($nummers);
       }
   }

?>
 
Sietsko Bos

Sietsko Bos

05/10/2018 20:20:21
Quote Anchor link
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.

Nogmaals dank voor je hulp.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.