Random geht nicht

  • Hi Leute

    Es klingt scurill aber es ist wirklich so.
    bei mir geht ein Randombefehl nicht, wenn ich diesen durch eine feste Zahl ersetze geht alles wunderbar nur wenn ich dann wieder den Random befehl nutze geht es wiederum nicht. Es ist nur an der einen stelle so hab rechtschreibung und alles 10 mal nachgesehen.

    $Test = Random(101 , 119)

    so schaut das gute stück aus ... vielleicht bin ich auch grade einfach zu doof dazu ^^

    P.S: Ach ja er wird einfach überlaufen es gibt keine fehlermeldung gar nichts ich bekomme nur dann den fehler das die Variable nicht gefunden wurde.

    2 Mal editiert, zuletzt von stevoo (1. April 2009 um 11:50)

  • Also hier ein Beispiel für Random:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include "RanNumGen.au3"; wenn die UDF im Script-Verzeichnis liegt
    ; #include <RanNumGen.au3>; wenn die UDF im Include-Verzeichnis (C:\Programme\AutoIt3\Include) liegt.

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

    ; <Anfang> Beispielaufruf mit Ausgabe
    ; ------------------------------------------------------------------------------
    Global $Timer = TimerInit()

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

    Global $zahlen = _RanNumGen(1000, 100000000, 999999999, True); Beispiel: 1.000 Zahlen aus dem Bereich 100.000.000...999.999.999, aufsteigend sortiert ausgeben

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

    If Not @error Then xArrayDisplay($zahlen, Round(TimerDiff($Timer)/1000,5))
    ; ------------------------------------------------------------------------------
    ; <Ende> Beispielaufruf

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

    ; Diese Funktion dient nur der Anzeige des Beispiel-Arrays
    Func xArrayDisplay(ByRef $aArray, $time)
    Local $i, $msg = ''
    GUICreate('Array Display', 240, 600, -1, 0)
    Local $gedit = GUICtrlCreateEdit('', 10, 10, 220, 560)
    For $i = 0 To UBound($aArray)-1
    $msg &= $aArray[$i] & @CRLF
    Next
    GUICtrlSetData($gedit, $msg)
    GUICtrlCreateLabel('Benötigte Zeit: ' & $time & ' sek.', 10, 575, 220, 20)
    GUISetState()
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    EndFunc

    [/autoit]

    Dazu benötigst Du aber die von Oscar erstellte Datei "RanNumGen.au3" im Include-Ordner.

    Spoiler anzeigen
    [autoit]


    #include-once

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

    ;===============================================================================
    ; Funktion Name: _RanNumGen()
    ; AutoIt-Version: 3.2.10.0
    ; Language: German
    ; Version: 1.3.0.0
    ; Date: 20. Feb. 2008
    ; Author: Thomas Stephan <oscar at elektronik-kurs dot de>
    ;
    ; Beschreibung:
    ; Diese Funktion generiert Zufallszahlen aus einem angegebenen Zahlenbereich.
    ; Die ausgegebenen Zufallszahlen sind einmalig, kommen also nicht doppelt vor.
    ; Sortierung erfolgt mit einer Quicksort-Version
    ;
    ; Funktionsaufruf: _RanNumGen($num, $start, $end[, $sort])
    ; $num = Anzahl der auszugebenen Zufallszahlen
    ; $start und $end = Anfang und Ende des Zahlenbereichs
    ; [$sort] = 'True', Ausgabe wird aufsteigend sortiert
    ; [$sort] = 'False' oder nicht angegeben, dann unsortiert
    ;
    ; Rückgabe:
    ; Wenn keine Fehler aufgetreten sind, wird ein 0-basiertes Array mit den
    ; Zufallszahlen zurückgegeben.
    ;
    ; @error =
    ; 0 = kein Fehler
    ; 1 = Wenn $num (Anzahl der Zufallszahlen) Null oder negativ
    ; 2 = Wenn $end kleiner als $start
    ; 3 = Wenn $num (Anzahl der Zufallszahlen) größer als
    ; der Zahlenbereich ($start bis $end)
    ; 4 = Dictionary-Objekt konnte nicht erstellt werden
    ;===============================================================================
    Func _RanNumGen($num, $start, $end, $sort = False)
    If $num < 1 Then Return SetError(1)
    If $end < $start Then Return SetError(2)
    If $num > $end - $start + 1 Then Return SetError(3)
    $oDictionary = ObjCreate('Scripting.Dictionary')
    If Not IsObj($oDictionary) Then Return SetError(4)
    SRandom(@AutoItPID + @SEC + @MIN + @HOUR + @YDAY + @YEAR)
    Local $out[$num], $ran, $i
    For $i = 0 To $num-1
    Do
    $ran = Random($start, $end, 1)
    Until Not $oDictionary.Exists($ran)
    $oDictionary.Add($ran, '')
    $out[$i] = $ran
    Next
    $oDictionary.RemoveAll
    If $sort Then _Quicksort($out, 0, $num-1)
    Return $out
    EndFunc

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

    Func _Quicksort(ByRef $aArray, $left, $right)
    If $left < $right Then
    Local $pivot = _SplitSwap($aArray, $left, $right)
    _Quicksort($aArray, $left, $pivot-1)
    _Quicksort($aArray, $pivot+1, $right)
    EndIf
    EndFunc

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

    Func _SplitSwap(ByRef $aArray, $left, $right)
    Local $i = $left, $j = $right-1, $pivot = $aArray[$right], $h
    Do
    While $aArray[$i] <= $pivot And $i < $right
    $i += 1
    WEnd
    While $pivot <= $aArray[$j] And $j > $left
    $j -= 1
    WEnd
    If $i < $j Then
    $h = $aArray[$i]
    $aArray[$i] = $aArray[$j]
    $aArray[$j] = $h
    EndIf
    Until $i >= $j
    $aArray[$right] = $aArray[$i]
    $aArray[$i] = $pivot
    Return $i
    EndFunc

    [/autoit]

    Ansonsten schaut die HILFE so aus und ist gut verständlich:
    Random ( [Min [, Max [, Flag]]] )
    Aber einfach mal die Beispiele in der Hilfe durchgehen und versuchen zu verstehen.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Es geeeeeht ^^

    Hab versuchshaleber die Flag hinzugefügt und nun gehts ^^

    danke für die hilfe :)