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

题目如下:

我写的代码如下:

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;}
}

运行结果如下:

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

  1. 练习4.圆中四只鸭子在同一个半圆的概率——MATLAB

    练习题4.圆中四只鸭子在同一个半圆的概率 参考思路: 蒙特咔罗法 (进行N次试验,每次试验生成4个随机点,统计四点在同一个半圆的个数)相关知识点: input.if...else.for循环或whil ...

  2. 三个点在同一个半圆的概率_求解四只鸭子在同一半圆池塘的概率

    问题模型 有四只鸭子,随机分布在圆形的池塘中,请问四只鸭子同时处于同一个半圆的概率有多大? 统计模拟 使用计算机进行大量的随机实验,统计推断出未知变量的概率.我们将进行100万次独立采样试验,每次试验 ...

  3. 趣味算法 四个点在同一个半圆的概率

    1. 题目 圆内任取四点在同一半圆内的概率是多少? 设点出现在圆内任意位置概率均等,且各点在同一直径上也视为在同一半圆内. 一些解答可以参考知乎. 我这里写的是我用C++计算概率的一些思路.通过循环来 ...

  4. 一道数学题引发的惨案!4只小鸭子在一个圆形的大水池中,分别随机的出现圆圈中任意一点。4只鸭子在同一半圆内的概率是多少?

    答案在文章结尾,不感兴趣的可以直接看答案 也就是昨天在渣男开车群中惊现一张照片.4只鸭子! 然后一群渣男开始了激烈的讨论,有说1/8的 有说3/4的 有说1/3的-反正说什么的都有 唉你说都是男的好好 ...

  5. 【算法-剑指 Offer】62. 圆圈中最后剩下的数字(环形链表;约瑟夫环;动态规划)

    剑指 Offer 62. 圆圈中最后剩下的数字 - 力扣(LeetCode) 发布:2021年9月12日12:18:52 问题描述及示例 0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每 ...

  6. Spring Boot+RocketMQ集群只会在一个Broker中创建队列

    问题: 在使用springboot集成RocketMQ Client后,开启自动创建队列,发现只会在一个Broker中创建Topic,但是在短时间内发送多条信息,就可以在集群情况下,在多个Broker ...

  7. 给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。...

    给定两个字符串 s 和 t,它们只包含小写字母.字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母.请找出在 t 中被添加的字母. 示例: 输入: s = "abcd" ...

  8. 找不同(给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。)

    给定两个字符串 s 和 t,它们只包含小写字母. 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母. 请找出在 t 中被添加的字母. 示例: 输入: s = "abcd&quo ...

  9. C语言试题四十九之只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。 n 给出了字符串的长度,h字符串中前导*号的个数,e给出了字符串中最后的*个数

    1. 题目 假定输入的字符串中只包含字母和*号.请编写函数function,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除.形参n 给出了字符串的长度,形参h给出了字符串中前导* ...

最新文章

  1. 关于未来的蝴蝶效应,《崛起的超级智能》创作有感
  2. 浅析网站结构如何开启优化工作
  3. Visual C++ 确定要使用的链接方法
  4. OTN交换amp;P-OTN有效减少100G网络成本(一)
  5. java去掉字符串中前后空格函数_JAVA中去掉字符串空格各种方法详解
  6. djang项目部署之IIS7部署
  7. android 端口进程号,Android中如何根据端口号寻找对应的进程
  8. java上机作业要注意什么_Java第八次上机作业
  9. Sinkhorn算法,正矩阵与双随机矩阵之间的关系
  10. C语言中static关键字详解
  11. Python -- 大小写转换
  12. matlab2c使用c++实现matlab函数系列教程-fft函数
  13. c++获取ctrl+v内容_处理文档时,快捷键「Ctrl+E」的 8 大妙用
  14. 太阳方位角/天顶角名词解释及计算方法
  15. web前端面试(1) 前端缓存怎么做?
  16. (面试)Springboot的启动流程
  17. 排序:快排(随机选择枢轴)、堆排序、归并排序
  18. ASP.NET MVC 音乐商店 - 4. 数据访问
  19. 后端: 判断手机是否已经root
  20. 产品体验报告 | 苏耳,语音直播会是陌生人社交的最优归属吗?

热门文章

  1. 8051单片机的片外总线结构
  2. 深入理解C++的new
  3. 什么是SOA架构?为什么使用SOA架构?
  4. 金蝶软件怎么修改服务器地址,金蝶软件服务器地址怎么修改
  5. 什么情况下会用到虚方法(虚函数)?它与接口有什么不同?
  6. python派森app_《派森》(Python)下载
  7. 图像特征提取——灰度共生矩阵(GLCM)
  8. swapidc的php语言,SWAPIDC目录说明及文件说明及某些常量内容
  9. 3ds max必用动画插件/RayFire 3D爆炸碎裂效果制作插件
  10. CCA OBSS/PD