phpbar.de logo

Mailinglisten-Archive

[php] Array mit Zufallszahlen - Endlosschleife

[php] Array mit Zufallszahlen - Endlosschleife

Sebastian Mendel lists at sebastianmendel.de
Die Jan 18 14:01:42 CET 2005


Kristofer Schwab schrieb:

>> Möchte ein Array mit Zufallszahlen füllen, wobei jede Zahl nur einmal
>> auftreten darf.
>> Mein Skript liefert mir leider nur eine Endlosschleife.
>>
>> $testarray = array();
>> $zaehler = 0;
>>
>> while ($zaehler < 10)
>> {     $zufall = rand(0,20);
>>
>>     for ($n=0;$n<$zaehler+1;$n++)
>>     {
>>     if ($testarray[$n]==$zufall)
>>         {
>>         $pruef = 'gibts';
>>         }
>>     }
>>     
>>     if ($pruef != 'gibts')
>>         {
>>         $testarray[$zaehler]=$zufall;
>>         $zaehler++;
>>         }
>> }
>>
>> Woran liegts ??
>>
>>  
>>
> Das geht auch einfacher:
> 
> while ($zaehler < 10)
> {     $zufall = rand(0,20);
> 
>     if(in_array($zufall, $testarray)) {
>         continue;
>     }
>     
>     $testarray[$zaehler]=$zufall;
>     $zaehler++;
> }

;-)

$array = array();

while ( count( $array ) <= 10 )
{
     $array[rand( 0, 20 )] = 0;
}

$array = array_keys( $array );



p.s. dein Fehler liegt darin das du $pruef nicht wieder zurücksetzt, und 
somit bei jedem Durchlauf $pruef auf "gibts" gesetzt ist, sobald einmal 
eine Zahl schon vorhanden war.

p.p.s. für sowas nimmt man 'flags'

$testarray = array();
$zaehler = 0;

while ($zaehler < 10)
{
     //$pruef = 'gibts nicht';  // dein Fehler !!!
     $flag_gibts_schon = false;
     $zufall = rand(0,20);

     for ( $n = 0; $n < $zaehler + 1; $n++ )
     {
         if ( $testarray[$n] == $zufall )
         {
             //$pruef = 'gibts';
             $flag_gibts_schon = true;
         }
     }

     //if ( $pruef != 'gibts' )
     if ( $flag_gibts_schon == false )
     {
         $testarray[$zaehler]=$zufall;
         $zaehler++;
     }
}

-- 
Sebastian Mendel

www.sebastianmendel.de www.warzonez.de www.tekkno4u.de www.nofetish.com
www.sf.net/projects/phpdatetime        www.sf.net/projects/phptimesheet

php::bar PHP Wiki   -   Listenarchive