Dieser Code dient als erwartet Druck „Durchschnittliche Anzahl der Pisten: 0,99864197“in der Nähe leer Java For-Schleife wirkt seltsam
import java.util.Random;
public class A {
public static void main(String[] args) {
int min = -30;
int max = 1;
test(min, max);
}
static void test(int min, int max){
int count = 0;
Random rand = new Random(0);
for(int j = 0; j < 2097152; j++){
int number = min + rand.nextInt(max-min+1);
for(int i = 0; i < number; ++i) {
System.out.print("");
count++;
}
}
System.out.println("Average Number of Runs: " + count/65536F);
}
}
Dieser Code, der die gleiche genaue Zahl gedruckt werden soll, sondern druckt er eine zufällige negative Zahl .
import java.util.Random;
public class A {
public static void main(String[] args) {
int min = -30;
int max = 1;
test(min, max);
}
static void test(int min, int max){
int count = 0;
Random rand = new Random(0);
for(int j = 0; j < 2097152; j++){
int number = min + rand.nextInt(max-min+1);
for(int i = 0; i < number; ++i) {
//System.out.print("");
count++;
}
}
System.out.println("Average Number of Runs: " + count/65536F);
}
}
Gibt es eine Optimierung, die in Java für Schleifen geschieht?
Hinweise:
- Ich verwende jdk1.6.0_45.
- Im normalen Einsatz hätte der neue Random einen besseren Samen.
- min und max sollte eine beliebige Zahl sein können.
Ich erinnere mich, dass dies ein Duplikat ist, aber ich vermute, dass ich Schwierigkeiten haben werde, es zu finden. Ich * denke * es ist ein JIT-Bug in 1.6, der in Java 7 behoben wurde. Können Sie Java 7 ausprobieren? –
@JonSkeet Ich habe das gerade in Java 7 versucht, und das hat perfekt funktioniert. – tbodt
Das Ausführen des Codes auf jre 7u25 scheint das Problem zu beheben, also scheint es ein Fehler in Java 6 zu sein. Diese Art von saugt seit einer ganzen Handvoll Leute in der Minecraft-Community, scheint nicht zu wissen, wie man update und Dieser Code ist Teil einer Spielmodifikation an der ich gearbeitet habe ... Auch @Jon Skeet kannst du eine Antwort posten, damit ich sie als akzeptiert markieren kann? –