Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Also, wenn du 40 Zahlen brauchst UND alle nur von 0 bis 39 UND sie sich nicht wieder holen sollen dann:
Code:
for (int i = 0; i < 40; i++) {
meinArray[i] = i;
}
Wenn du aber weniger als 40 zahlen hast, dann musst du wirklich das Random benutzen. Und wie Reality schon gesagt hat, überprüfen, ob sich die Zahl bereits im Array befindet.
Auf jeden Fall per Suchfunktion! Das Thema kam schon einige Male.
Aber um trotzdem eine Antwort zu geben: Hier ein Link zu einem anderen Thread, welcher das behandelte.
Gleich ganz oben. http://www.java-forum.org/de/viewtopic.php?t=10292&start=24
Genau, sie müssen ja durcheinander sein
Und der entscheidende Punkt ist, wie ich prüfe ob sie schon im Array ist, mit den random Sachen komm ich schon ganz gut klar, aber da ich vom seichten PHP her komme weiss ich (noch) nicht so schöne Array-Funktionen wie in_array() oder so, die mich testen lassen, ob die Zahl schon drinne ist.
// EDIT: oder so eine herrliche foreach Schleife oder so
Ich habe mal just for fun eine Klasse geschrieben, die etwas mehr kann als nur Zufallszahlen auszugeben. Das was bicpi sucht ist jedenfalls möglich.
Zwar deckt sie nur den Integer-Bereich ab, aber das sollte für viele Anwendungsgebiete ausreichen.
Code:
import java.util.*;
public class Zufallszahlen {
private boolean duplikateErlaubt;
private int anzahl, bereichVon, bereichBis;
private int[] zahlen;
public Zufallszahlen(int anzahl, boolean duplikateErlaubt, int bereichVon, int bereichBis) {
if(bereichBis - bereichVon < anzahl && !duplikateErlaubt) {
System.out.println("Fehler: Die Parameter lassen keine Erzeugung von Zufallszahlen zu!");
System.out.println("Vergoessern Sie den Wertebereich, verringern Sie die Anzahl der zu\nerzeugenden Zufallszahlen oder lassen Sie Duplikate zu.");
System.exit(1);
}
else {
zahlen = new int[anzahl];
this.duplikateErlaubt = duplikateErlaubt;
this.bereichVon = bereichVon;
this.bereichBis = bereichBis + 1;
System.out.println("Ermittlung von "+anzahl+" Zufallszahlen zwischen einschliesslich "+bereichVon+" und "+bereichBis+".");
if(duplikateErlaubt)
System.out.println("Dabei sind Duplikate erlaubt.");
else
System.out.println("Dabei sind Duplikate nicht erlaubt.");
zufall();
}
}
//Zufallszahlen entsprechend der Vorgaben ermitteln
private void zufall() {
int nummero = 0;
int zahl = 0;
while(nummero < zahlen.length) {
zahl = (int)(Math.random() * bereichBis);
if(zahl < bereichVon)
continue;
else {
zahlen[nummero] = zahl;
if(!duplikateErlaubt) {
for(int i = 0; i < nummero; i++) {
if(zahlen[i] == zahl)
nummero--;
}
}
}
nummero++;
}
}
//Zufallszahlen aufsteigend sortieren
public void sortieren() {
Arrays.sort(zahlen);
}
//Textausgabe der Zufallszahlen auf der Console
public void ausgeben() {
for(int i = 0; i < zahlen.length; i++)
System.out.print(zahlen[i]+" ");
System.out.println();
}
//Die Zufallszahlen in einem Array an den Aufrufer zurück geben
public int[] zurückgeben() {
return zahlen;
}
public static void main(String[] args) {
//Ein kleiner Test
Zufallszahlen z = new Zufallszahlen(10, false, 10, 50);
z.ausgeben();
z.sortieren();
z.ausgeben();
}
}
Allerdings klingt das was bicpi vor hat eigentlich nur nach "Mische die Zahlen von 0 bis 39".
Auch das ist mit dem Programm möglich.
He, nö. Bin doch (noch) nicht so gut darin.
Weiss nur, dass man class Bla<T extends Number> machen muss, damit das auch eine Number-Klasse wie Integer oder Double sein muss, die instantiiert wird.