Announcement

Collapse
No announcement yet.

Arrayfeld1 == lehr???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Arrayfeld1 == lehr???

    Hallo!

    Ich möchte verschiedene Zahlen in ein Array reinhauen. Allerdings sollen diese Zahlen am ende gemischt sein. Das realisiere ich so:

    Again:
    Mein Script ermittelt eine Zufallszahl für ein Arrayfeld, also Array[$Zufall].
    Jetzt fragt es ab, ob es noch leer ist.
    Wenn ja, dann schreibe die Zahl rein, ansonsten gehe zu Again.

    Aber irgendwie macht er das nur halb. In meinem Fall habe ich z.B. Zahlen von 1 - 5 und er nimmt immer eine doppelt, dafür lässt er 5 ganz weg. Das ist auch so bei 1 - 10... etc


    Code:
    ZufallAgain:
                $Zufall = int ( rand ( 5 ) + 1 ); # 1 - 5
    
                if ( $RandomArrayStart[$Zufall] == undef ) # wenn unbenutzt
                {
                    $RandomArrayStart[$Zufall] = $Zahl; # dann schreibe die Zahl dort rein
                }
                else
                {
                    goto ZufallAgain;
                }
    Er benutzt dann z.B. nur Felder wie: 3, 1, 4, 2, 1 oder 4, 2, 4, 3, 1 ... abundzu gibt er auch richtige aus.
    Was auffällt ist, dass er immer nur die 1te Zahl doppelt hat.
    Was mache ich falsch?

    Danke im Voraus,

    MfG Darthshoot
    Zuletzt editiert von Darthshoot; 07.09.2008, 17:46.

  • #2
    Auch hallo,

    als Anregung gibt es die Fisher-Yates-Mischung: http://en.wikipedia.org/wiki/Knuth_shuffle
    Unter PHP gäbe es hierfür die Methoden shuffle() (ab PHP 4.3) sowie pc_array_shuffle() (bis PHP 4.3)
    MfG
    Cheat-Sheets for Developers / Programming Quotes

    Comment

    Working...
    X