Random-Buchstaben generieren

  • Hey Leute ich wollte mal fragen, ob und wie man zufalls Buchstaben generiert. Also es soll von (groß) A bis (groß) Z gehen.
    Ich habe schon vielen Müll ausprobiert und möchte nun euch fragen.
    Ich hoffe ihr wisst eine Lösung.

    Einmal editiert, zuletzt von Rey96 (7. September 2011 um 18:21)

  • Der Funktion Chr() bzw. ChrW() übergibt man eine Zahl und man erhält das Zeichen an dieser Stelle des ASCII- bzw. ANSI-Zeichensatzes.
    Wenn du also Buchstaben zufällig haben willst erzeugst du Zufallszahlen aus dem Bereich an dem Buchstaben dort stehen und erzeugst dann mit einer dieser beiden Funktionen den entsprechenden Buchstaben.

    Also zusammengefasst: Du brauchst Random(), Chr() und die ASCII-Tabelle

  • Kann es sein, dass die ANSI Zahlen für A - Z gaaanz zufällig hintereinander sind? :D
    Btw. wo finde ich die Liste/Tabelle der Zeichen?

  • Mit Unterstützung von Google hättest du selbst auch, zusätzlich zur schon verlinkten ASCII-Tabelle, eine entsprechende ANSI-Tabelle gefunden.
    Da würde man dann feststellen dass der ASCII-Zeichensatz und der ANSI-Zeichensatz bei den ersten Zeichen (einschließlich der Buchstaben) gleich ist.
    Es ist für deinen Anwendungsfall also egal ob du Chr() oder ChrW() verwendest.

  • Ja okay habe es jetzt anderst gemacht :D
    Aber wie kann ich das machen ...?
    Ich habe 8 Variablen und will die in einer Msgbox wiedergeben. Die sollen aber nicht jetzt zB. 12345678 sein sondern 54836721 oder in einer anderen Aufstellung. Kann man machen das die zufällig hintereinander stehen?

  • Hallo Rey96,
    hier das von Dir gewünschte Beispiel (probier es lieber selbst, bevor Du Dir das ansiehst):

    Spoiler anzeigen
    [autoit]


    $String = ""
    For $i = 1 To 8
    $String = $String&Chr(Random(65, 122, 1))
    Next
    MsgBox(0, "8 zufällig generierte Buchstaben", $String)
    Exit

    [/autoit]


    P.S.: Wenn Du nur Großbuchstaben erhalten möchtest, einfach anstatt 122 90 einsetzen.

  • ah danke aber ich habe ja 8 zufallsgenerierte zahlen die in strings gespeichert sind. wie soll ich es dann machen?
    sry falls die frage dämlich ist :D

  • ich glaube ich oder ihr habt mich falsch verstanden :D

    also ich will die 8 strings "zufällig" hintereinander hängen. das ich es mit & mache wusste ich ja ^^

  • Ich denke, dass ich mich nur falsch ausgedrückt habe. Also ich wollte nur die 8 Zufallszahlen die in den 8 verschiedenen Strings gespeichert sind ganz zufällig hintereinander hängen und diese als msg ausgeben.
    Ja gut ich gucke mal nach wie das mit dem array geht
    Melde mich dann nochmal ;D

    EDIT: ich weis ja jetzt wie eins funktioniert aber wie ich jetzt zufällig die strings einbinde ist mir imme rnoch nicht bewusst

    Einmal editiert, zuletzt von Rey96 (6. September 2011 um 21:44)

  • Sag jetzt mal ganz konkret was du wie warum erreichen willst.
    Was soll am Ende passieren?
    Und ich meine nicht den Zwischenschritt mit den Zahlen aneinander reihen sondern was ist dein konretes Endziel des ganzen.
    Da du nie deine Skriptversuche postest und dauernd deine Fragestellung änderst bringt das beiden Seiten hier nicht wirklich Punkte.
    Gib dir bitte ein bisschen Mühe mit einer vernünftigen Problembeschreibung und poste deine Versuche damit man dir wirklich weiterhelfen kann.

    Um mal zu demonstrieren wie man sich bei deinen Problembeschreibungen als Lesender fühlt:

    Spoiler anzeigen

    Hey Leute cih wollte mal fragen, ob und wie man zufalls Buchstaben generiert

    Alles klar - Zufallsbuchstaben.

    Ja okay habe es jetzt anderst gemacht

    Auch gut - wie wird allerdings wird nicht verraten.

    Ich habe 8 Variablen und will die in einer Msgbox wiedergeben. Die sollen aber nicht jetzt zB. 12345678 sein sondern 54836721 oder in einer anderen

    Also jetzt sollen auf einmal 8 Zufallszahlen statt Buchstaben erzeugt werden die dann einfach hintereinander stehen. - ok

    ah danke aber ich habe ja 8 zufallsgenerierte zahlen die in strings gespeichert sind. wie soll ich es dann machen?

    Also doch nicht - die Zahlen liegen also doch schon vor. Sollten die nicht eben erst noch generiert werden. Was soll jetzt mit denen passieren?

    also ich will die 8 strings "zufällig" hintereinander hängen.

    Gut wieder einen Schritt zurück. Du hast also einzelne Zahlen die du in einen String hintereinander hängen willst?

    Ziemliches hin und her also bei dem man nie weiß was du wirklich machen willst und wo das Problem nun wirklich liegt.

    Einmal editiert, zuletzt von AspirinJunkie (6. September 2011 um 21:59)

  • also :D
    ich will das am ende ein zufallscode herauskommt der 8 zeichen lang ist und 2 zeichen davon buchstaben sind und die anderen 6 sollen dann zufallszahlen von 0 - 9 sein und das ganze soll in einer msg box ausgegeben werden. und jede zufallszahl/buchstabe bei mir ist ein string und ich will das diese nicht in einer bestimmten reihenfolge ausgegeben werden sondern komplett zufällig durcheinander gewürfelt

    hier der code ( ja ich bin noch ein totaler noob ^^ und ja der code ist sehr komisch geschrieben )

    Spoiler anzeigen
    [autoit]

    $a = "1"
    $b = "2"
    $c = "3"
    $d = "4"
    $e = "5"
    $f = "6"
    $g = "7"
    $h = "8"
    $i = "9"
    $j = "10"
    $k = "11"
    $l = "12"
    $m = "13"
    $n = "14"
    $o = "15"
    $p = "16"
    $q = "17"
    $r = "18"
    $s = "19"
    $t = "20"
    $u = "21"
    $v = "22"
    $w = "23"
    $x = "24"
    $y = "25"
    $z = "26"
    $r1 = Random($a,$e,1)
    $r2 = Random($a,$e,1)
    $r3 = Random(0,9,1)
    $r4 = Random(0,9,1)
    $r5 = Random(0,9,1)
    $r6 = Random(0,9,1)
    $r7 = Random(0,9,1)
    $r8 = Random(0,9,1)
    If $r1 = 1 Then
    $R1 = "A"
    ElseIf $r1 = 2 Then
    $R1 = "B"
    ElseIf $r1 = 3 Then
    $R1 = "C"
    ElseIf $r1 = 4 Then
    $R1 = "D"
    ElseIf $r1 = 5 Then
    $R1 = "E"
    ElseIf $r1 = 6 Then
    $R1 = "F"
    ElseIf $r1 = 7 Then
    $R1 = "G"
    ElseIf $r1 = 8 Then
    $R1 = "H"
    ElseIf $r1 = 9 Then
    $R1 = "I"
    ElseIf $r1 = 10 Then
    $R1 = "J"
    ElseIf $r1 = 11 Then
    $R1 = "K"
    ElseIf $r1 = 12 Then
    $R1 = "L"
    ElseIf $r1 = 13 Then
    $R1 = "M"
    ElseIf $r1 = 14 Then
    $R1 = "N"
    ElseIf $r1 = 12 Then
    $R1 = "O"
    ElseIf $r1 = 16 Then
    $R1 = "P"
    ElseIf $r1 = 17 Then
    $R1 = "Q"
    ElseIf $r1 = 18 Then
    $R1 = "R"
    ElseIf $r1 = 19 Then
    $R1 = "S"
    ElseIf $r1 = 20 Then
    $R1 = "T"
    ElseIf $r1 = 21 Then
    $R1 = "U"
    ElseIf $r1 = 22 Then
    $R1 = "V"
    ElseIf $r1 = 23 Then
    $R1 = "W"
    ElseIf $r1 = 24 Then
    $R1 = "X"
    ElseIf $r1 = 25 Then
    $R1 = "Y"
    ElseIf $r1 = 26 Then
    $R1 = "Z"
    EndIf

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

    If $r2 = 1 Then
    $R2 = "A"
    ElseIf $r2 = 2 Then
    $R2 = "B"
    ElseIf $r2 = 3 Then
    $R2 = "C"
    ElseIf $r2 = 4 Then
    $R2 = "D"
    ElseIf $r2 = 5 Then
    $R2 = "E"
    ElseIf $r2 = 6 Then
    $R2 = "F"
    ElseIf $r2 = 7 Then
    $R2 = "G"
    ElseIf $r2 = 8 Then
    $R2 = "H"
    ElseIf $r2 = 9 Then
    $R2 = "I"
    ElseIf $r2 = 10 Then
    $R2 = "J"
    ElseIf $r2 = 11 Then
    $R2 = "K"
    ElseIf $r2 = 12 Then
    $R2 = "L"
    ElseIf $r2 = 13 Then
    $R2 = "M"
    ElseIf $r2 = 14 Then
    $R2 = "N"
    ElseIf $r2 = 12 Then
    $R2 = "O"
    ElseIf $r2 = 16 Then
    $R2 = "P"
    ElseIf $r2 = 17 Then
    $R2 = "Q"
    ElseIf $r2 = 18 Then
    $R2 = "R"
    ElseIf $r2 = 19 Then
    $R2 = "S"
    ElseIf $r2 = 20 Then
    $R2 = "T"
    ElseIf $r2 = 21 Then
    $R2 = "U"
    ElseIf $r2 = 22 Then
    $R2 = "V"
    ElseIf $r2 = 23 Then
    $R2 = "W"
    ElseIf $r2 = 24 Then
    $R2 = "X"
    ElseIf $r2 = 25 Then
    $R2 = "Y"
    ElseIf $r2 = 26 Then
    $R2 = "Z"
    EndIf
    MsgBox(0,"","random number: "&$r1&$r2&$r3&$r4&$r5&$r6&$r7&$r8)

    [/autoit]

    Einmal editiert, zuletzt von Rey96 (6. September 2011 um 22:18)

  • Tralala...

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    Dim $array[8][2]
    For $i = 0 To 7
    $array[$i][0] = Random(0, 1)
    If $i <= 1 Then $array[$i][1] = Chr(Random(65, 90, 1))
    If $i >= 2 Then $array[$i][1] = Random(0, 9, 1)
    Next
    _ArraySort($array)
    $string = ""
    For $i = 0 To 7
    $string &= $array[$i][1]
    Next
    MsgBox(0, "Generierter String", $string)

    [/autoit]


    Gruß Andy :)

  • Na das ist ja schon mal deutlich konkreter.

    Entweder du wolltest die 2 Buchstaben am Anfang haben - dann so:

    Spoiler anzeigen
    [autoit]

    Global $s_String = Chr(Random(65, 90, 1)) & Chr(Random(65, 90, 1))

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

    For $i = 1 To 6
    $s_String &= Random(0, 9, 1)
    Next

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

    MsgBox(0,"Mein String", $s_String)

    [/autoit]

    Oder alles sollte gemischt werden - dann z.B. so:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    ; Array mit 8 Elementen erstellen welches unser Zeichenvorrat wird
    ; Wird so initialisiert das die ersten beiden Zeichen die Buchstaben sind:
    Global $a_Arr[8] = [Chr(Random(65, 90, 1)), Chr(Random(65, 90, 1))]

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

    ; den Rest des Arrays mit Zufallszahlen füllen:
    For $i = 2 To 7
    $a_Arr[$i] = Random(0, 9, 1)
    Next

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

    ; das Ergebnis-Array mal ausgeben damit man sieht was man gemacht hat:
    _ArrayDisplay($a_Arr, "Mein Zeichenvorrat")

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

    ; Einen neuen leeren String erstellen:
    Global $s_String = ""

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

    ; Zufällig aus dem Array Zeichen entnehmen, an den String anhängen und das Zeichen aus unserem Zeichenvorrat löschen:
    For $i = 7 To 0 Step -1
    $x = Random(0,$i, 1)
    $s_String &= $a_Arr[$x]
    _ArrayDelete($a_Arr, $x)
    Next

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

    ; Ergebnisstring ausgeben:
    MsgBox(0,"Mein String", $s_String)

    [/autoit]
  • Spoiler anzeigen

    Jaaaa danke genau das hatte ich gesucht ^^

    Spoiler anzeigen

    1. Ja das hatte ich immer gehabt.
    2. Ja das hatte ich gesucht :D

    Ah gut habe es jetzt auch verstanden :P
    Wollte grade noch fragen wie es mehr btw. weniger ausgibt, aber hat sich erledigt.

    Vielen dank an euch, dass ihr so geduldig mit mir wart ^^

    EDIT: Wenn ihr noch etwas Zeit hättet würdet ihr mir noch erklären oder zeigen wie ich mache, dass er nie einen Buchstaben und/oder Zahl 2 mal oder öfter benutzt?

    EDIT2: also ich habe schon mal raus wie ich nie einen code 2 mal bekomme jetzt muss ich nur noch wissen wie ich einen buchstaben oder eine zahl in einem code niemals doppelt bekomme ^^

    3 Mal editiert, zuletzt von Rey96 (7. September 2011 um 19:03)