10 verschiedene Zufallszahlen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 10 verschiedene Zufallszahlen

    Hi@all

    hab da ein Problem mit dem Generien von Zufallszahlen.

    Ich möchte zum Seitenaufruf 10 verschiedene Bilder aus einem Pool per Zufall anzeigen anzeigen lassen.
    Dazu nutze ich folgende Variante:
    PHP-Code:

    $count
    =0;

    while (
    $count 10)
    {
     
    $teile explode("|"$_SESSION['zufall']);
     
    $count count($teile);
     
    $zahl rand(1,10);
     if (!
    in_array($zahl$teile))
     {
       
    $SESSION['zufall'] .= $zahl."|";
     }
     else
     {
      echo 
    "zufallszahl vorhanden";
     }

    aber irgendwie funktioniert das nicht so richtig.
    Könnte das mal einer von Euch prüfen und mir nen Tipp geben wie ich das hinbekomme.

    Thx@all

  • #2
    srand ((double)microtime()*1000000); in die Schleife und ab gehts

    Hintergrundinfo: Der Startwert muss immer neu festgelegt werden, sonst ermittelt rand immer das gleiche.
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

    Kommentar


    • #3
      Original geschrieben von Benny-one
      srand ((double)microtime()*1000000); in die Schleife und ab gehts

      Hintergrundinfo: Der Startwert muss immer neu festgelegt werden, sonst ermittelt rand immer das gleiche.
      nicht ganz!
      der bekommt immer noch eine endlose schleife, da $count nicht erhöht ist.
      und seit version 4.2 ist srand nicht mehr nötig(um sicher zu gehen würde ich vorher mit phpversion() version rausfinden, und dann entscheiden, ob srand nötig ist.
      Ausserdem braucht er in SESSION kein string, der mit "|" getrennt ist zu benutzen, in SESSION kann man direkt ein Object oder Array packen.
      Slava
      bituniverse.com

      Kommentar


      • #4
        Hi@all

        hab es jetzt hinbekommen:
        PHP-Code:
        <?
        unset($array);
        $array = array();
        $count = 0;
        srand ((double)microtime()*1000000);
        while ($count < 4)
        {
         $count = count($array);
         $zahl = rand(1,14);
         if (!in_array($zahl,$array) )
         {
          array_push($array,$zahl);
         }
        }
        ?>
        <table id="table2" align="center" border="0" cellspacing="0" cellpadding="0">
        <?
        foreach ($array as $teil)
        {
         if ( $teil < 10 ) $teil = "0".$teil;
         echo "
               <tr>
                <td bgcolor='#28166F' align='center'>
                 <img border='0' src='images/listen".$teil.".jpg'><br>
                 <img src='images/null.gif' border='0' width='6'></td>
               </tr>
              ";
        }
        ?>
        </table>
        Allerdings gibt es noch ein Problem:

        es werden im Array (0-4)manchmal nur 4 statt 5 zahlen gespeichert.
        Kommt ganz willkürlich und unregelmäßig ???
        Hat da jemand 'ne Ahnung woran das liegt.

        Thx@all

        Kommentar


        • #5
          PHP-Code:
          while (count($array) < 5)
          {
           
          $zahl rand(1,14);
           if (!
          in_array($zahl,$array) )
           {
            
          array_push($array,$zahl);
           }

          Zuletzt geändert von combie; 13.06.2006, 09:44.
          Wir werden alle sterben

          Kommentar


          • #6
            @combie

            danke - funzt

            Kommentar


            • #7
              nur so als tip:
              http://de3.php.net/manual/de/function.range.php
              http://de3.php.net/manual/de/function.array-rand.php
              http://de3.php.net/manual/de/function.sprintf.php

              in o.g. reihenfolge nutzen und dein code schrumpft um knapp die hälfte. dürfte auch erheblich schneller sein.
              Kissolino.com

              Kommentar

              Lädt...
              X