Avatar billede henninghabor Nybegynder
29. juli 2004 - 11:33 Der er 5 kommentarer og
1 løsning

Bingo - 15 tilfældige og forskellige tal

Hej,

Jeg kunne godt tænke mig hjælp til at få lavet 15 tilfældige og forskellige tal.

Det skal bruges til at lave en bingo plade.

Jeg har prøvet dette:

for($i = 0;$i < 15;$i++)
{
  $new[$i] = rand(1,90);

  if(array_key_exists($new[$i],$new))
  {
    $new[$i] = rand(1,90);
  }
}

Men det giver engang imellem det samme tal flere gange.

På forhånd tak for hjælpen.
Avatar billede coderdk Praktikant
29. juli 2004 - 11:45 #1
<?php

    $numbers = array();

    while ( count( $numbers) < 15 )
    {
        $num = mt_rand( 1, 90 );
        if ( !in_array( $num, $numbers ) )
        {
            $numbers[] = $num;
        }
    }

    // Evt. sortere?
    sort( $numbers );
   
?>
Avatar billede henninghabor Nybegynder
29. juli 2004 - 11:52 #2
Det er fornemt - Mange tak for hjælpen.
Avatar billede Slettet bruger
30. juli 2004 - 02:20 #3
Så er der bare en detalje mere, du skal være opmærksom på: på en rigtig bingo-plade er der højst 3 tal i hver spalte, dvs 1-9, 10-19, 20-29, ... 70-79 og 80-90.
Avatar billede henninghabor Nybegynder
30. juli 2004 - 09:29 #4
Hej sandbox,

Jeg har haft det oppe og vende, men fandt frem til at det bliver senere... Nu skulle jeg lige have det til at virke først...

Om jeg så får lavet en "rigtig" bingo-plade, må tiden vise... :)
Avatar billede Slettet bruger
30. juli 2004 - 14:40 #5
Der er forresten tre detaljer mere ;-)

Rigtige bingo-plader kommer i sæt af 6 stk, hvor de tilsammen indeholder alle tallene netop en gang hver.

Derudover er der altid 5 tal i hver række.

Og, inden for en plade står tallene i samme spalte i nummerorden oppefra.

Det er faktisk ikke helt nemt at lave rigtige bingo-plader, når man skal tage højde for alle de ting.
Avatar billede coderdk Praktikant
30. juli 2004 - 15:29 #6
Det lyder faktisk rimeligt nemt, det er jo nogle dejligt faste regler. Jeg ville lige se /hvor/ nemt det var, og kom frem til denne:

<?php

    $source = range( 1, 90 );
    shuffle( $source );

    $plader = array();

    for ( $p = 0; $p < 6; $p++ )
    {
        $tal = array_slice( $source, 0, 15 );
        $source = array_slice( $source, 15 );
        sort( $tal );
        $r = 0;
        $plade = array();
        foreach ( $tal as $number )
        {
            $plade[ $r ][] = $number;
            $r++;
            $r %= 3;
        }
        $plader[] = $plade;
    }

    $i = 0;
    foreach ( $plader as $plade )
    {
        $i++;
        echo "<div><b>Plade $i:</b></div>";
        foreach ( $plade as $raekke )
        {
            echo "<div style='float: none'>";
            foreach ( $raekke as $tal )
            {
                echo "<div style='float: left; width: 20px;'>$tal</div>\n";
            }
            echo "</div><br />\n";
        }
        echo "<br />";
    }
 
?>


Så kan du jo bruge den, hvis du kan og vil :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester