このコードは、予想印刷として働く「ランの平均数:0.99864197」は、forループは奇妙作用
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);
}
}
同じ正確な数を印刷、代わりに、それはランダムな負の数を印刷する必要があり、このコード。
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);
}
}
java forループで発生する最適化はありますか?
注:
- 私はjdk1.6.0_45使用しています。
- 通常の使用では、新しいランダムはより良いシードを持ちます。
- minとmaxは任意の数値にする必要があります。
私はこれが重複していることを覚えているようですが、私はそれを見つけるのが難しいと思っています。私は*それはJavaの7で修正された1.6のJITバグだと思う。あなたはJava 7で試すことができますか? –
@JonSkeet私はJava 7でこれを試しましたが、これは完全に機能しました。 – tbodt
jre 7u25でコードを実行すると問題が解決されたようですので、Java 6のバグと思われます。この種の問題は、minecraftコミュニティの人のほんの一部であるため、このコードは私が取り組んできたGame-Modificationの一部です...また、@ Jon Skeetはあなたが回答を投稿できるので、私は受け入れられたとマークすることができますか? –