数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
楼主: luyuanhong

在圆周上任取三点 A,B,C ,求 A,B,C 三点落在同一半圆周内的概率

[复制链接]
发表于 2016-10-17 09:13 | 显示全部楼层
本帖最后由 天山草 于 2016-10-17 10:06 编辑

我用 VB 语言编写了一个小程序,用产生随机数的方法模拟每次的试验,试验次数累计到 1 亿次,求得概率为 0.74999832(理论概率是0.75)。
程序如下:   
         
     Private Sub form_Click()         
     Randomize     '启动随机数发生器
     n = 0
     For i = 1 To 1000000   ' 试验次数
      b1 = 360 * Rnd  '产生三个 1 至 360 之间的随机数
      b2 = 360 * Rnd
      b3 = 360 * Rnd     
     If b1 <= b2 And b1 <= b3 And b2 <= b3 Then a1 = b2 - b1: a2 = b2 - b3
     If b1 <= b3 And b1 <= b2 And b3 <= b2 Then a1 = b3 - b1: a2 = b3 - b2
     If b2 <= b1 And b2 <= b3 And b1 <= b3 Then a1 = b1 - b2: a2 = b1 - b3
     If b2 <= b3 And b2 <= b1 And b3 <= b1 Then a1 = b3 - b2: a2 = b3 - b1
     If b3 <= b1 And b3 <= b2 And b1 <= b2 Then a1 = b1 - b3: a2 = b1 - b2
     If b3 <= b2 And b3 <= b1 And b2 <= b1 Then a1 = b2 - b3: a2 = b2 - b1
     
     If a1 <= 180 And -a2 <= 180 And a1 + (-a2) <= 180 Then n = n + 1  '三个点同在半圆内的情况一      
     If a1 >= 180 And -a2 >= 180 And (360 - a1) + (360 + a2) <= 180 Then n = n + 1 '三个点同在半圆内的情况二      
     If a1 >= 180 And -a2 <= 180 Then n = n + 1    '三个点同在半圆内的情况三      
     If a1 <= 180 And -a2 >= 180 Then n = n + 1    '三个点同在半圆内的情况四     
    Next i
    Print "s="; n / (i - 1)      
End Sub

    说明一下编程思路——
    假定这圆周内部是一个圆盘,游戏者每次往盘上投掷三枚飞镖。
    从圆盘中心向这三枚飞镖引三条射线,与圆周交于三点。这三点位于同一半圆圆周上的概率即为所求。
    每试验一次,程序就产生三个 1 至 360 的随机数 b1,b2,b3,代表三枚飞镖的角度,将这三个角度同步旋转,使中间值角度到达 0 度位置,此时最大角度算是正角度,最小角度算是负角度。程序中将正角度记为 a1,负角度记为 a2,那个中间值角度 a0=0 不必要在程序中出现。   
    每试验一次,就把三枚飞镖是否落在同一半圆内的次数进行统计,最后算算总账,即得概率。
    编程难点是,如何考虑 a0,a1,a2 是位于同一半圆内? 如果对各种情况漏掉或多算,就出错了。我考虑的四种情况是:
    (1)如果 a1,a2 都在第一、第二象限中,则 a0,a1,a2 位于同一半圆内;
    (2)如果 a1,a2 都在第三、第四象限中,则 a0,a1,a2 位于同一半圆内;
    (3)如果 a1 在一、二象限中,而 a2 在三、四象限中,就要计算 a1a0a2 圆弧是否小于半圆,是,则 a0,a1,a2 位于同一半圆内;
    (4)如果 a2 在一、二象限中,而 a1 在三、四象限中,就要计算 a1a0a2 圆弧是否小于半圆,是,则 a0,a1,a2 位于同一半圆内。
回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2016-10-17 11:08 | 显示全部楼层
谢谢楼上 天山草 的编程解答。我已将此帖转贴到“陆老师的《数学中国》园地”。
发表于 2018-7-31 14:15 | 显示全部楼层
发表于 2018-7-31 14:16 | 显示全部楼层
天山草 发表于 2016-10-17 09:13
我用 VB 语言编写了一个小程序,用产生随机数的方法模拟每次的试验,试验次数累计到 1 亿次,求得概率为 0. ...

发表于 2018-8-12 20:52 | 显示全部楼层
bilibili av17275211
3b1b的中国官方账号。这个视频讲了一个球面任取四点,球心落于其形成的四面体的概率,弱化形式为一个圆任取三点,圆心落于其中的概率。而不包含圆心与本题落在同一半圆等价。
发表于 2019-3-1 18:13 | 显示全部楼层
在半径为1cm的圆周上任取24点,则24个点落在同一3/7圆周内的概率是多少?
发表于 2019-3-1 18:18 | 显示全部楼层
本帖最后由 markfang2050 于 2019-5-3 13:31 编辑

python3.6求随机5点共半圆的概率.10000次实验随机5点共半圆的概率是:5/16=0.310700


#编程难点:如何考虑 a1,a2,a3 ,a4,a5是位于同一半圆内?考虑的5种情况:
    #(1)如果 a1a2 弧长与a2a3 ,a3a4,a4a5弧长之和小于半圆弧长,则a1,a2,a3 ,a4,a5 位于同一半圆内;
    #(2)如果 a1a2 弧长与a2a3 ,a3a4,a4a5弧长之和大于半圆弧长且a1a2 弧长大于半圆弧长,则a1,a2,a3 ,a4,a5 位于同一半圆内;
    #(3)如果 a1a2 弧长与a2a3 ,a3a4,a4a5弧长之和大于半圆弧长且a1a2 弧长小于半圆弧长,a2a3大于半圆弧长,则a1,a2,a3 ,a4,a5 位于同一半圆内;
    #(4)如果 a1a2 弧长与a2a3 ,a3a4,a4a5弧长之和大于半圆弧长且a1a2 ,a2a3弧长小于半圆弧长,a3a4大于半圆弧长,则a1,a2,a3 ,a4,a5 位于同一半圆内;
    #(5)如果 a1a2 弧长与a2a3 ,a3a4,a4a5弧长之和大于半圆弧长且a1a2 ,a2a3,a3a4弧长小于半圆弧长,a4a5大于半圆弧长,则a1,a2,a3 ,a4,a5 位于同一半圆内;

发表于 2019-3-1 18:19 | 显示全部楼层
10000次实验随机4点共半圆的概率是:0.499400
发表于 2019-3-1 18:19 | 显示全部楼层
#10000次实验随机3点共半圆的概率是:0.754900
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2024-5-3 05:32 , Processed in 0.072266 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表