把一根棒子任意折成三段,求它们可以构成三角形的概率——JAVA实现

如题,代码实现:

import java.util.Scanner;

public class text1 {
    public static void main(String[] args){
        System.out.println("请输入一个整数n,使1<=n<=7");
        Scanner n=new Scanner(System.in);
        int lim=n.nextInt();
        int f=0;
        double an=Math.pow(10,lim);
        double con;
        double aus;
        for(int i=0;i<an;i++){
        double a=Math.random();
        double b=Math.random();
        if((1-a-b)<0) {
            i--;
            continue;
        }
        if((a+b)>=0.5&&a<=0.5&&b<=0.5)//(a+b>=1-a-b&&a+1-a-b>=b&&b+1-a-b>=a)
            f= f+1;}
        con=f;
        aus=con/an;
        System.out.println("一根棒子任意折成三段可以构成三角形的概率是:"+aus);
        }
}
 

多次尝试可以看出,符合大数定理,n越大,越接近0.25.

知识补充:

1.Scanner接受外界输入转成字符,而字符不能进行运算。故要用int lim=n.nextInt();再次转换成整型。

以下内容摘自https://blog.csdn.net/wo_shi_LTB/article/details/78803676

2.从外界接收数据除了Scanner外还可以用main中的args导入,即直接 for(int i=0;i<args.length;i++), 再右键代码,选择  运行方式—>运行配置—>在自变量中输入args值。

3.要设定第三条边小于零时i--并且重来这种情况。

待解决问题:

原错误代码:

第15行无法将f值传输到con中,需要拆分  con=f; aus=con/(10*lim);才可。

 


 

猜你喜欢

转载自blog.csdn.net/yghkdr/article/details/85156253