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.
Random-Buchstaben generieren
-
- [ gelöst ]
-
Rey96 -
6. September 2011 um 19:16 -
Geschlossen -
Erledigt
-
-
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?
Btw. wo finde ich die Liste/Tabelle der Zeichen? -
- Offizieller Beitrag
Btw. wo finde ich die Liste/Tabelle der Zeichen?
[Blockierte Grafik: http://www.bug-fix.info/rtfm_book.gif]Hilfe >> Appendix >> ASCII Characters
-
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
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? -
Einen leeren String erstellen (Global/Local $String = "") und 8 Zufallszahlen erzeugen die du mit dem &-Operator an den String dranhängst.
-
Kannst du bitte ein Beispiel machen?
-
Hallo Rey96,
hier das von Dir gewünschte Beispiel (probier es lieber selbst, bevor Du Dir das ansiehst):Spoiler anzeigen
[autoit]
[/autoit]
$String = ""
For $i = 1 To 8
$String = $String&Chr(Random(65, 122, 1))
Next
MsgBox(0, "8 zufällig generierte Buchstaben", $String)
Exit
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 -
Wenn Du acht einzelne Strings hast, kannst Du diese Strings einfach mit "&" aneinanderhängen.
[autoit]
[/autoit]
Global $StringEins = "1", $StringZwei = "2"
$StringEins = $StringEins&$StringZwei
MsgBox(0, "Strings", $StringEins)
Exit -
ich glaube ich oder ihr habt mich falsch verstanden
also ich will die 8 strings "zufällig" hintereinander hängen. das ich es mit & mache wusste ich ja
-
Das könntest Du mit einem Array machen, auch wenn ich nicht verstehe, warum sich Deine Frage mehrfach ändert und Du nicht die einfachste Lösung (s. 9. Post) verwendest.
-
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 ;DEDIT: ich weis ja jetzt wie eins funktioniert aber wie ich jetzt zufällig die strings einbinde ist mir imme rnoch nicht bewusst
-
Eine Array benutzt einen Index, und ein Index ist nur eine Zahl.
Und wie man Zufallszahlen erstellt weist du ja hoffentlich mitlerweile.MfG, James
-
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.
-
also
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ürfelthier der code ( ja ich bin noch ein totaler noob und ja der code ist sehr komisch geschrieben )
Spoiler anzeigen
[autoit]$a = "1"
[/autoit] [autoit][/autoit] [autoit]
$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"
EndIfIf $r2 = 1 Then
[/autoit]
$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) -
Tralala...
Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit]
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)
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
[/autoit] [autoit][/autoit] [autoit]
$s_String &= Random(0, 9, 1)
NextMsgBox(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
[/autoit] [autoit][/autoit] [autoit]
; 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))]; den Rest des Arrays mit Zufallszahlen füllen:
[/autoit] [autoit][/autoit] [autoit]
For $i = 2 To 7
$a_Arr[$i] = Random(0, 9, 1)
Next; das Ergebnis-Array mal ausgeben damit man sieht was man gemacht hat:
[/autoit] [autoit][/autoit] [autoit]
_ArrayDisplay($a_Arr, "Mein Zeichenvorrat"); Einen neuen leeren String erstellen:
[/autoit] [autoit][/autoit] [autoit]
Global $s_String = ""; Zufällig aus dem Array Zeichen entnehmen, an den String anhängen und das Zeichen aus unserem Zeichenvorrat löschen:
[/autoit] [autoit][/autoit] [autoit]
For $i = 7 To 0 Step -1
$x = Random(0,$i, 1)
$s_String &= $a_Arr[$x]
_ArrayDelete($a_Arr, $x)
Next; Ergebnisstring ausgeben:
[/autoit]
MsgBox(0,"Mein String", $s_String) -
Spoiler anzeigen
Tralala...
Spoiler anzeigen
[autoit]#include
[/autoit]
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)
Gruß AndyJaaaa danke genau das hatte ich gesucht
Spoiler anzeigen
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
[/autoit] [autoit][/autoit] [autoit]
$s_String &= Random(0, 9, 1)
NextMsgBox(0,"Mein String", $s_String)
[/autoit]Oder alles sollte gemischt werden - dann z.B. so:
Spoiler anzeigen
[autoit]#include
[/autoit] [autoit][/autoit] [autoit]; Array mit 8 Elementen erstellen welches unser Zeichenvorrat wird
[/autoit] [autoit][/autoit] [autoit]
; 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))]; den Rest des Arrays mit Zufallszahlen füllen:
[/autoit] [autoit][/autoit] [autoit]
For $i = 2 To 7
$a_Arr[$i] = Random(0, 9, 1)
Next; das Ergebnis-Array mal ausgeben damit man sieht was man gemacht hat:
[/autoit] [autoit][/autoit] [autoit]
_ArrayDisplay($a_Arr, "Mein Zeichenvorrat"); Einen neuen leeren String erstellen:
[/autoit] [autoit][/autoit] [autoit]
Global $s_String = ""; Zufällig aus dem Array Zeichen entnehmen, an den String anhängen und das Zeichen aus unserem Zeichenvorrat löschen:
[/autoit] [autoit][/autoit] [autoit]
For $i = 7 To 0 Step -1
$x = Random(0,$i, 1)
$s_String &= $a_Arr[$x]
_ArrayDelete($a_Arr, $x)
Next; Ergebnisstring ausgeben:
[/autoit]
MsgBox(0,"Mein String", $s_String)1. Ja das hatte ich immer gehabt.
2. Ja das hatte ich gesuchtAh gut habe es jetzt auch verstanden
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
-