四只鸭子在一个水池中,分别随机出现在圆圈中任意一点,四只鸭子出现在同一个半圆的概率是多少?

news/2024/12/2 18:59:48/

上个月在网上看到一道数学题,于是写了个算法进行计算,别人和我说这叫蒙特卡罗。

题目如下:
在这里插入图片描述
我写的代码如下:

package DuckCircle;import java.util.Random;public class DuckTime {private static int duck1=0;private static int duck2=0;private static int duck3=0;private static int duck4=0;public static Random r=new Random();//有鸭子出现在分隔线上private static int sbDuck=0;//有鸭子出现在分隔线上private static int VIPsbDuck=0;public static void main(String[] args) {int samtimes=0;int notsamtimes=0;int times=1000000;System.out.println("随机生成"+times+"次鸭子,并判断!");for (int i = 0; i <times; i++) {if (judgeDuck())samtimes++;else notsamtimes++;}System.out.println("在同一个半圆内的次数为"+samtimes);System.out.println("不在同一个半圆内的次数为"+notsamtimes);System.out.println("两只鸭子出现在同一个分割线上的次数为"+sbDuck);System.out.println("在同一个半圆且出现两次鸭子在分隔线的次数为:"+VIPsbDuck);}//以原点为圆心把每个鸭子的位置写成极坐标// 判断是否在一个半圆内的时候距离不是必要因素// 所以只生成角度public static void getRandomDuck(){duck1=r.nextInt(360)+1;duck2=r.nextInt(360)+1;duck3=r.nextInt(360)+1;duck4=r.nextInt(360)+1;}//根据当前鸭子角坐标获得一个半圆区域public static int[] getHalfCircle(int a){if (a<=180)return new int[]{a,a+180};else return new int[]{a-180,a};}//随机生成一次鸭子并判断是否在一个半圆内public static boolean judgeDuck(){//记录本次开始前的sbduck数量;int Sduck=sbDuck;//随机获取四只鸭子getRandomDuck();//把鸭子放进数组int[] duck={duck1,duck2,duck3,duck4};//遍历每只鸭子for (int i = 0; i < duck.length; i++) {//根据当前鸭子位置获取一个半圆区域,不在该区域内就是另外一个半圆内int[] halfCircle = getHalfCircle(duck[i]);//在该半圆内的鸭子个数int countthis=0;//在另一个半圆内鸭子的个数int countthat=0;//在本次遍历出现在分隔线上的鸭子int thisSBDuck=0;for (int j = 0; j < duck.length; j++) {//去除该鸭子本身if (j==i)continue;//如果该鸭子在对分线上则同时在两个半圆内if (duck[j]==halfCircle[0]||duck[j]==halfCircle[1]){countthis++;countthat++;if (Sduck==sbDuck){sbDuck++;//该参数在一次生成鸭子判断中只能增加一次;}thisSBDuck++;continue;}//判断鸭子是在哪个半圆内if (duck[j]>halfCircle[0]&&duck[j]<halfCircle[1])countthis++;else countthat++;}//不管哪个半圆鸭子数等于3,就返回trueif (countthis==3||countthat==3){if (thisSBDuck!=0)VIPsbDuck++;return true;}}//否则返回falsereturn false;}
}

运行结果如下:
在这里插入图片描述


http://www.ppmy.cn/news/467971.html

相关文章

oracle小型机叹号灯亮,一个黄圆圈加一个感叹号 汽车叹号故障灯图解

有时轿车产生常见故障&#xff0c;车内仪表盘便会有仪表盘指示灯闪烁&#xff0c;不一样样子的故障指示灯意味着着不一样的常见故障缘故。例如&#xff1a;一个黄圆形加一个惊叹号的是刹车系统指示灯。 轿车带惊叹号常见故障指示灯图解1、刹车系统指示灯&#xff1a; 有时轿车产…

excel中的圈和叉

打开word,“格式→中文版式→带圈字符”&#xff0c;在弹出的窗口中&#xff0c;“文字”选“”“圈号”的选“○”&#xff0c;确定后就生成了圈中有叉的字符&#xff0c;再复制选定&#xff0c;到EXCEL中&#xff0c;此时右键“选择性粘贴”选“图片”选项&#xff0c;调整下…

visio2013的加法器(一个圆圈内一个加号)所在位置

visio2013的加法器&#xff08;一个圆圈内一个加号&#xff09;所在位置 找了好久&#xff0c; 在流程图->混合流程图形状中

关于使用Word过程中如何快速键盘打出一个框框、一个打勾的框框、一个打叉的框框

经常使用Word工具的童靴们经常会遇到这样的情况&#xff0c;在一些 选项面前有一些 “框框”&#xff0c;事实上这份文档打印出来的话&#xff0c;那在这个框框里面✔是很方便&#xff0c;&#xff08;直接用笔✔就行&#xff09;但是在一些创新创业项目&#xff0c;一些居民信…

如何判断一个点是否在矩形内(叉乘法)

转自&#xff08;如何判断点在矩阵内&#xff09; 只需要判断该点是否在上下两条边和左右两条边之间就行&#xff0c;判断一个点是否在两条线段之间夹着&#xff0c;就转化成&#xff0c;判断一个点是否在某条线段的一边上&#xff0c;就可以利用叉乘的方向性&#xff0c;来判…

叉乘在图形学中的几何意义 ---- 判断一个点是否在三角形内

1 叉乘是什么 先简单介绍一下叉乘(cross product)&#xff1a; a → b → \overrightarrow{a} \times \overrightarrow{b} a b &#xff0c;其结果&#xff0c;还是一个向量。 其方向&#xff0c;符合右手螺旋定则&#xff08;右手手指头从a转向b&#xff0c;看大拇指指向哪…

mathtype中如何添加一个圆圈中间一个减号的符号

在word里打开或直接打开MathType&#xff0c;选“编辑”->“插入符号”->查看通->说明->新搜索(W)&#xff0c;关键字Circled Minus&#xff0c;或只搜cir等找到腐蚀操作符号&#xff0c;如下图&#xff1a;

美国国家量子计划咨询委员会发布更新国家量子计划建议

​ &#xff08;图片来源&#xff1a;网络&#xff09; 耗资12亿美元的美国国家量子计划&#xff08;NQI&#xff09;于2018年12月颁布&#xff0c;该计划为期10年&#xff0c;现在将开展审查前五年的活动&#xff0c;并对今后五年的推进计划提出建议。为此&#xff0c;美国国…