# Random mit Buchstaben



## bRainLaG (4. November 2010)

hmmm ich muss nochmal was fragen, da ich grade sehrviel mit random rumprobiere wollte ich mir für die Arbeit einen Passwort Generator schreiben. Bis dato klappt das alles sehr gut aber ich habe auch nach mehrmaligen Googeln jetzt keine Lösung gefunden wie ich ein random für sonderzeichen machen kann, bzw eine Reihe von Sonderzeichen angeben kann aus denen ich random eins aussuche. Kann mir da vieleicht wer nen tipp geben (oder nen link) wo dazu infos stehen.

Außerdem habe ich noch ein kleines Randproblem mit der Ausgabe, dass diese so erfolgt:
A, a, e , e, l
Ich hätte aber gerne Aaeel 
also das ganze ohne ,

Bis dato sieht meine println so aus:

```
System.out.println("Password:" + Arrays.toString(passwd));
```


----------



## Tim Bureck (4. November 2010)

Erstelle dir eine Liste mit allen Zeichen, die du verwenden möchtest und erzeuge eine Zufallszahl, die den jeweiligen Index des Zeichens wiederspiegelt und abspeichert.

Die Ausgabe kannst du selbst so regeln (davon ausgegangen, dass es ein char-Array ist):


```
for (char c : passwd) {
  System.out.print(c);
}
// Zeilenumbruch
System.out.println();
```


----------



## bRainLaG (4. November 2010)

hmmm ich danke erstmal ich versuch das mal hatte gehofft das es einfacher geht


----------



## Herbertus (4. November 2010)

Alternativ kannst du jedes ermittelte Zeichen ein einen StringBuffer mit reinschreiben, welchen du am Ende einfach ausgibst oder umwandelst und dann ausgibst.


```
StringBuffer st = new StringBuffer("");
char c = 0;

// Nehmen wir mal an , man setz die länge des Pw's auf 10(maxPwLenght)
for(int i = 0; i < maxPwLength; i++){

  // rnd nen zeichen ermitteln...
  //
  c = rndZeichen(); // lassen wir uns zufällig jedes mal eine 1 zurückgeben..
  //
  st.append(c);
}

System.out.println("Passwort: " + st);
// Dann haben wir zufällig(^^) die Ausgabe: 1111111111
```


----------



## zeja (4. November 2010)

Eigentlich ist es sehr einfach. Du definierst dir ein Array aus char aus Zeichen die zu verwenden möchtest, z.B.
char [] possibleChars = {'ä', 'ö', 'a' , 'z', '7'};
und generierst dann Zufallszahlen nach der Länge des Arrays, hier also von 0 bis 4 und suchst dann über diesen Index den Buchstaben aus dem Array.

Wenn dein passwd-Array ein char[] ist, reicht auch new String(passwd) um daraus einen String zu machen und diesen dann entsprechend auszugeben.


----------



## sebastianb (4. November 2010)

Also ich würde es so machen:


```
public class Hauptklasse
{
   public String getRandomString(int length)
   {
      
      StringBuffer sb= new StringBuffer();
      
      for(int i=0;i<length;i++)
      {
        sb.append((char) ((int)(Math.random()*90)+33));
      }
      
      return sb.toString();
   }
   
   public static void main(String[] args)
   {
      System.out.println(new Hauptklasse().getRandomString(100));
   }
}
```

Hier ermittle ich eine Zufallszahl im Bereich von 0-89 und addiere 33 hinzu. Demzufolge bekomme ich eine Zufallszahl zwischen 33 und 122. Dies ist genau der Bereich in dem sich alle Buchstaben,Zahlen und Sonderzeichen befinden. Danach caste ich die Zufallszahl auf einen char und hänge den dann an meinen Stringbuffer.

Viele Grüße

Sebastian


----------

