Häufigkeiten in Autoit speichern und Maximalwerte anzeigen

  • Heyho ihr Nasen!

    Ich bin grad dabei einen bot zu programmieren.Ich werde das Problem aus Verständnisgründen etwas abgewandelt darstellen.
    Der Bot gibt in einer Schleife 10 zufällige Zahlen zwischen 1 und 100 aus.
    Diese Schleife wird biespielsweise 50 mal wiederholt.

    Jetzt will ich, dass der Bot die Häufigkeit aller Zahlen (von 1 bis 100) speichert und mir zum gewünschten Zeitpunkt die 10 am meisten erschienenen Zahlen anzeigt.


    Mein erster Ansatz(noch nicht umgesetzt):
    Als amateur hab ich zuerst einfach 100 Variablen, für jede mögliche Zahl eine, erstellt.
    Falls nun beispielsweise die 5 gezogen wird, wird zur zugehörigen Variable ($var5) +1 addiert.
    Wenn ich am Schluss dann die Werte der Variablen betrachte, weiß ich genau, welche Zahlen wie oft generiert wurden.

    Problem:
    Nun will ich aber , wie oben genannt, die 10 am häufigsten dreangekommen Zahlen haben.
    Dazu müsste ich wohl alle Variablen vergleichen und die 10 höchsten Werte herausfilten.
    Bloß hab ich keine Ahnung wie, mit welchem Befehl oder sonst wie.

    Ich geh mal davon aus, dass das Thema "Arrays" in diesem Punkt nicht unwichtig sein wird, deshalb häng ich mich da jetzt mal rein. Wäre dankbar für Hilfe von euch.

    Gruß Rhandy

    • Offizieller Beitrag

    Hallo

    Mh, meinst du sowas? Ist jetzt mit Array.

    Spoiler anzeigen
    [autoit]

    #include<Array.au3>
    $iWieOft = 100

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

    Global $sBuf
    Global $aZahl[$iWieOft][2]

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

    For $i = 0 To $iWieOft - 1
    $aZahl[$i][0] = 0
    $aZahl[$i][1] = $i
    Next

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

    For $i = 0 To $iWieOft - 1
    $iRand = Random(0,$iWieOft - 1,1)
    $aZahl[$iRand][0] += 1
    Next

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

    _ArraySort($aZahl,1); Hier werden die zahlen sortiert, höchste zuerst

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

    For $i = 0 To 10 ;Die 10 Höchsten rausfinden
    $sBuf &= $aZahl[$i][1]&@TAB&$aZahl[$i][0]&"x vorgekommen"&@CRLF
    Next
    MsgBox(0,"","Die 10 häufigsten Zahlen:"&@CRLF&$sBuf)

    [/autoit]

    Mfg Spider

  • Thx for the info!

    Ich hab mich jetzt mal die nacht vor die Kiste gesetzt und mir die Sache reingezogen. So langsam schnall ich das ungefähr.
    Nächstes Problem:

    Wir nehmen an, dass es für jede der hundert möglichen Zahlen eine zugehörige Aktion für das Programm gibt. Das Programm soll die Aktionen der 10 am meisten aufgetretenen Zahlen ausführen?
    Wie könnte sowas funktionieren?

    btw: ich versuch damit eine Art glücksspielbot zu basteln. Nur zum Test und bisher auch fast nur auf papier und im Kopf....

  • Okay, ich bin in zwischen sehr viel weiter gekommen..

    Nochmal eine Frage, die nach langem Suchen nicht beantwortet werden konnte.
    Mein Programm ist wie eine Schrittkette aufgebaut und springt von funktion zu funktion.
    Ich hab mir nun einen Hotkey gesetzt, der mir(über eine eigene Funktion) mit _Arraydisplay die Werte eines bestimmten Arrays anzeigt.
    Jedoch Stoppt das programm dabei jedesmal und kann nach dem Schließen des Arrayfensters eben nur zu fest vorgegebenen Funktionen weiterspringen.

    Nun hätte ich gerne,dass das Programm, nachdem ich das Arrayfenster geschlossen habe am punkt an dem es gestoppt hat, weitermacht.

    Und nochwas:
    Ist es möglich sich mit _Arraydisplay Arraywerte anzuzeigen, während das programm weiterläuft? Also das ich veränderungen der Arraywerte direkt ansehen kann?