Mã này đóng vai trò như in mong đợi "Average Số Chạy: 0,99864197"Gần trống Java Ví-Vòng hành động kỳ lạ
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);
}
}
Mã này rằng nên in các con số chính xác như nhau, nhưng thay vào đó nó in một số âm ngẫu nhiên .
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);
}
}
Có một số tối ưu hóa xảy ra trong java cho vòng lặp không?
Ghi chú:
- Tôi đang sử dụng jdk1.6.0_45.
- Trong sử dụng bình thường, ngẫu nhiên mới sẽ có hạt giống tốt hơn.
- phút và tối đa có thể là bất kỳ số nào.
Tôi dường như nhớ rằng đây là một bản sao, nhưng tôi nghi ngờ tôi sẽ gặp khó khăn trong việc tìm kiếm nó. Tôi nghĩ * đó là lỗi JIT trong 1.6 đã được sửa trong Java 7. Bạn có thể thử trên Java 7 không? –
@ JonSkeet Tôi chỉ thử điều này trong Java 7, và điều này đã làm việc hoàn hảo. – tbodt
Chạy mã trên ju 7u25 dường như để khắc phục vấn đề, do đó, nó dường như là một lỗi trong Java 6. Đó là loại hút kể từ một khá nhiều người trong cộng đồng Minecraft, dường như không biết làm thế nào để cập nhật và mã này là một phần của một trò chơi-Sửa đổi Tôi đã làm việc trên ... Cũng @Jon Skeet bạn có thể gửi một câu trả lời vì vậy tôi có thể đánh dấu nó như được chấp nhận? –