Schleifendurchlauf Zählen

    • Offizieller Beitrag

    Naja, um ein ehrliches Ergebnis zu bekommen, müßte man Dein Script etwas ändern:

    [autoit]


    Global $sString = "|", $iSol = 415335, $iCount
    While 1
    $iRand = Random(0, 999999, 1)
    $iCount += 1
    If Not StringInStr($sString, "|" & $iRand & "|") Then
    $sString = $iRand & "|"
    EndIf
    If $iRand = $iSol Then ExitLoop
    WEnd

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

    MsgBox(0, "", "Er braucht: " & $iCount & " Versuche")

    [/autoit]


    Denn das Script schließt eben nicht die Doppelten aus, sondern vergleicht nur, ob die Zahl schon ausgewählt wurde.
    Der Nachteil bei meinem Script ist die lange Initialisierungzeit für das Array. Wenn man das allerdings öfter braucht, dann kann man mit einer Kopie davon arbeiten und dann ist es wieder wesentlich schneller.

  • Oscar

    Und so Dein Script mit der Anzeige wie lange es gedauert hat ? ;)

    Spoiler anzeigen
    [autoit]


    $begin = TimerInit()

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

    $iSecret = 415335

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

    Global $aBrute[1000000]
    ToolTip('Bitte warten...', @DesktopWidth/2-100, 0)
    For $i = 0 To 999999
    $aBrute[$i] = $i
    Next
    ToolTip('Suche Zahl...', @DesktopWidth/2-100, 0)
    For $i = 0 To 999999
    ;~ If $i/10 = Int($i/10) Then ToolTip($i, @DesktopWidth/2-100, 0)
    $iRan = Random(0, 999999-$i, 1)
    If $aBrute[$iRan] = $iSecret Then
    ;MsgBox(0, 'Gefunden', 'geheime Zahl gefunden nach ' & $i & ' Versuchen.')
    $dif = TimerDiff($begin)
    MsgBox(0,"", "Mit einer Zeit von: " & $dif & " (1/1000) Sekunden und " & $i & " Versuchen wurde die Zahl gefunden.")
    Exit
    EndIf
    $aBrute[$iRan] = $aBrute[999999-$i]
    Next

    [/autoit]

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr