【发布时间】:2020-07-30 17:44:28
【问题描述】:
我正在尝试编写一个 Java 程序,该程序使用蒙特卡罗模拟来计算两个随机选择的数字互质的概率。如果两个整数均分的唯一正整数是 1,则两个整数互质。我尝试使用欧几里德算法找到 GCD,如果它等于 1,则找到它等于 1 的次数的概率。它没有执行,关于我做错了什么的任何提示?
import java.util.Scanner;
public class MonteCarlo
{
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
int b = scan.nextInt();
public static int euclidMethod(int a, int b) //euclid's algorithm
{
if(b==0)
{
return a;
}
else
{
return euclidMethod(b, a % b);
}
}
public static void main(String args[])
{
for(int i = 0; i < 100000000; i++)
{
if(euclidMethod() == 1)
{
return (euclidMethod() / 100); //probability its equal to 1
}
}
}
}
【问题讨论】:
-
这不会编译。您的
euclidMethod需要两个参数,而您尝试不使用任何参数来调用它。此外,您设置了a和b一次,因此您的模拟只会测试相同的“随机”数数百万次。也许你应该从更简单的开始。
标签: java montecarlo