Zufallszahlengenerator

  • Moin geehrtes Forum,

    bisher habe ich AutoIT lediglich zum automatisieren von Installationen verwendet. Nun spiele ich ein wenig mit Arrays und Zufallszahlen herum.
    Dazu habe ich einen Generator geschrieben der Zahlen in einem bestimmten Bereich erzeugen soll.
    Der Bereich wird aus dem einem Array herausgelesen, eine Zahl erzeugt und in ein anderes Array hineingeschrieben.
    Dabei sollen die Zahlen pro Zeile in einer Spalte immer Größer sein als die vorhergehende in der Selben Spalte.

    Nun ist es aber so das trotzdem ab und zu zwei oder drei gleiche Werte in eine Spalte des Array geschrieben werden.

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ; Arrays und Variablen definieren
    Dim $ZAHLEN[5][10]
    Dim $ZAHLEN_SPANNE[6][2]
    Dim $ZEILE_ZWI = 0

    [/autoit] [autoit][/autoit] [autoit]

    ;Zahlenspanne für Zufallszahlen
    $ZAHLEN_SPANNE[0][0]=1
    $ZAHLEN_SPANNE[0][1]=20
    $ZAHLEN_SPANNE[1][0]=10
    $ZAHLEN_SPANNE[1][1]=30
    $ZAHLEN_SPANNE[2][0]=20
    $ZAHLEN_SPANNE[2][1]=40
    $ZAHLEN_SPANNE[3][0]=30
    $ZAHLEN_SPANNE[3][1]=50
    $ZAHLEN_SPANNE[4][0]=40
    $ZAHLEN_SPANNE[4][1]=60

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Array Reset
    for $ZEILE = 0 To 4 Step 1
    for $SPALTE = 0 to 9 Step 1
    $ZAHLEN[$ZEILE][$SPALTE] = 0
    Next
    Next

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    For $SPALTE = 0 to 9 Step 1
    For $ZEILE = 0 to 4 Step 1
    $ZWI = Random ( $ZAHLEN_SPANNE[$ZEILE][0],$ZAHLEN_SPANNE[$ZEILE][1], 1 )
    If $ZEILE > 0 Then
    $ZEILE_ZWI = $ZEILE-1
    EndIf
    If $ZWI < $ZAHLEN[$ZEILE_ZWI][$SPALTE] Then
    Do
    $ZWI = Random ( $ZAHLEN_SPANNE[$ZEILE][0],$ZAHLEN_SPANNE[$ZEILE][1], 1 )
    Until $ZWI > $ZAHLEN[$ZEILE_ZWI][$SPALTE]
    EndIf
    $ZAHLEN[$ZEILE][$SPALTE] = $ZWI
    Next
    Next

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($ZAHLEN, "Zahlenreihen")

    [/autoit]

    Nun weiß ich nicht weiter und hoffe das ihr mir weiterhelfen könnt.


    Vielen Dank

  • Warum müssen denn alle Variablen groß geschrieben sein? ;)

    Deine Frage verstehe ich noch nicht so ganz - aber ich kann mir vorstellen, dass die gleichen Werte dadurch entstehen, dass bei Random auch der Minimalwert der Spanne ausgegeben werden kann, also Random(0, 1) kann auch 0 zurückgeben. ;)

  • Zitat


    Der Bereich wird aus dem einem Array herausgelesen, eine Zahl erzeugt und in ein anderes Array hineingeschrieben.
    Dabei sollen die Zahlen pro Zeile in einer Spalte immer Größer sein als die vorhergehende in der Selben Spalte.

    Sagen wir Du hast z.B. eine "Spanne" von 20 und du fängst mit der Zahl 10 an. So hättest du - Random(10,10+20,1) - für die Zufallsgeneration.
    Was soll denn nun passieren, wenn direkt die erste Randomzahl = 29 ist? Wie können da die darauffolgenden 10 Zufallszahlen alle größer sein als die Vorherige?