Hallo und Gute Nacht, :lol:
Wie im Titel beschrieben sitze ich jetzt schon bereits mehrere Tage an einem Problem. :###
Ich möchte gerne eine Zufallszahl erstellen mit 4 Stellen und 10 Ziffern, welche jedoch nicht doppelt vorkommen dürfen. Sprich 1467 und nicht 1417.
Ich habe mir bereits ein Verfahren ausgedacht welches mit Vertauschung arbeitet.
Ich generiere ein Array welches so Aussieht:
0|1|2|3|4|5|6|7|8|9
Nun Vertausche ich die Stellen mit einer Zufallszahl an jeder einzelnen Stelle.
Das Heißt:
0|1|2|3|4|5|6|7|8|9
Zufallszahl :3 also
2|1|0|3|4|5|6|7|8|9
Als nächstes z.B. Zufallszahl :7 also
2|1|6|3|4|5|0|7|8|9
Dies Ziehe ich nun bis zur letzten STelle durch und nehme die ersten oder letzten 4 Ziffern und speichere sie in meine Zahl ab.
Kennt irgendjemand vielleicht einen Weg, dies noch Effizienter durchführen zu können?
Hier die Vertauschung:
Ich glaube das dies nicht die effizienteste Methode ist und frage deshalb einmal in diesem Forum nach.
Ich möchte den Kürzesten und unaufwändigsten Code haben- *Zwang*
Gruß
Wie im Titel beschrieben sitze ich jetzt schon bereits mehrere Tage an einem Problem. :###
Ich möchte gerne eine Zufallszahl erstellen mit 4 Stellen und 10 Ziffern, welche jedoch nicht doppelt vorkommen dürfen. Sprich 1467 und nicht 1417.
Ich habe mir bereits ein Verfahren ausgedacht welches mit Vertauschung arbeitet.
Ich generiere ein Array welches so Aussieht:
0|1|2|3|4|5|6|7|8|9
Nun Vertausche ich die Stellen mit einer Zufallszahl an jeder einzelnen Stelle.
Das Heißt:
0|1|2|3|4|5|6|7|8|9
Zufallszahl :3 also
2|1|0|3|4|5|6|7|8|9
Als nächstes z.B. Zufallszahl :7 also
2|1|6|3|4|5|0|7|8|9
Dies Ziehe ich nun bis zur letzten STelle durch und nehme die ersten oder letzten 4 Ziffern und speichere sie in meine Zahl ab.
Kennt irgendjemand vielleicht einen Weg, dies noch Effizienter durchführen zu können?
Hier die Vertauschung:
Code:
public class Zufall{
public static void main(String[] args){
int[] zahlen={0,1,2,3,4,5,6,7,8,9};
// jetzt mischen, jede darf einmal
for(int i=0; i<10; ++i){
int j=(int)(Math.random()*10);
int schieben=zahlen[i];
zahlen[i]=zahlen[j];
zahlen[j]=schieben;
}
Ich möchte den Kürzesten und unaufwändigsten Code haben- *Zwang*
Gruß