Я пытаюсь закодировать симуляцию Монте-Карло на Java из кода MATLAB. Ответ MATLAB не соответствует ответу кода Java. Я должен получить около 34%, но вместо этого получаю 29%, другие варианты проблемы, которые я пытаюсь решить, приводят к разнице в -5% от того, что я предполагаю получить. Я что-то неправильно закодировал? или случайный класс в java недостаточно случайный для симулятора Монте-Карло?
КОД MATLAB:
01 meetings = 0;
02 for loop = 1:1000000
03 L = 30*rand;
04 B = 30*rand;
05 if B<L & L<B+7
06 meetings = meetings +1;
07 elseif L<B & L>B-5
08 meetings = meetings +1;
09 end
10 end
11 meetings/1000000
код Java:
import java.util.Random;
public class Malt {
public static void main(String[] args) {
double meetings = 0;
int l = 0, b = 0;
Random random = new Random();
for(int i = 1; i < 1000000; i++){
l = (int) (random.nextDouble()*30);
b = (int) (random.nextDouble()*30);
if((b<l)&&(l<(b+7)))
meetings = meetings +1;
else if((l<b)&&(l>(b-5)))
meetings = meetings +1;
}
System.out.println(meetings/1000000);
}
}