免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 发帖

在单位正方形的边上任取两点,求其距离不小于 1/2 的概率

单位正方形就是边长为 1 的正方形。在这个正方形的边上任取两点,这两个点之间的距离大于等于 1/2 的概率是多少?

据说这是高中一年级的学生应该会做的题目。我用概率模拟得出这个概率约为0.91。
理论值是多少呢?
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

“任取=均匀分布”的话,我算出来结果是 $(26-\pi)/32$,近似值为 $0.714$,不知你是怎么模拟的?可以写下你的程序吗?

TOP

向来不太会表达这类题的过程,尽量看图意会吧:

QQ截图20171018231512.png
2017-10-18 23:16


如图,由对称性只需考虑第一个点落在 $AE$ 上的情形。

第一步,在 $AE$ 上取第一点,设其与 $E$ 的距离范围为 $[x,x+\rmd x]$,这步的概率为 $2\rmd x$;

第二步,在四边上取第二点,显然其与第一个点距离小于 $1/2$ 的概率为 $(AM+AN)/4$,而
\begin{align*}
AM&=1-x, \\
AN&=\sqrt{\left( \frac12 \right)^2-\left( \frac12-x \right)^2}=\sqrt{x(1-x)},
\end{align*}
故此所求概率为
\begin{align*}
P&=1-\int_0^{1/2}\frac{AM+AN}4\cdot 2\rmd x \\
&=1-\frac12\int_0^{1/2}1-x+\sqrt{x(1-x)}\rmd x \\
&=\frac{26-\pi}{32}.
\end{align*}
$\href{https://kuingggg.github.io/}{\text{About Me}}$

TOP

回复 1# TSC999

kk应该没错啊,你到底咋模拟的?
32.jpg
2017-10-19 01:51

TOP

本帖最后由 TSC999 于 2017-10-19 08:07 编辑

噢,原先的程序 VB 有个低级错误,改正如下,跟您的结果相同。
   '编程思路——
   '产生两个 0 至 4 的随机数 a1 和 a2,确定两个点在正方形边上的位置。
   '算出这两个点之间的距离。大于等于 0.5 时则计数。求出概率。                     
     Private Sub form_Click()         
     Randomize     '启动随机数发生器
     n = 0
     For i = 1 To 100000000   ' 试验次数
      a1 = 4 * Rnd  '产生 1 至 4 之间的随机数
      a2 = 4 * Rnd
     If a1 >= 0 And a1 <= 1 Then X1 = a1: Y1 = 0
     If a1 > 1 And a1 <= 2 Then X1 = 1: Y1 = a1 - 1
     If a1 > 2 And a1 <= 3 Then X1 = a1 - 2: Y1 = 1
     If a1 > 3 And a1 <= 4 Then X1 = 0: Y1 = a1 - 3   
     If a2 >= 0 And a2 <= 1 Then X2 = a2: Y2 = 0
     If a2 > 1 And a2 <= 2 Then X2 = 1: Y2 = a2 - 1
     If a2 > 2 And a2 <= 3 Then X2 = a2 - 2: Y2 = 1
     If a2 > 3 And a2 <= 4 Then X2 = 0: Y2 = a2 - 3
     If Sqr((X1 - X2) ^ 2 + (Y1 - Y2) ^ 2) >= 0.5 Then n = n + 1
222: Next i
      Print "s="; n / (i - 1)
      End Sub
' 程序运行结果:等于 0.71432766,理论值是 (26-Pi)/32 = 0.71432522…。

TOP

本帖最后由 TSC999 于 2017-10-19 08:15 编辑

感谢 Kuing 大师的解答!
也感谢【战巡】的 mathematica 的程序。
把我在上面的 VB 程序换成 mathematica 程序如下:
k = 1000000; For[i = 1; n = 0, i <= k, i++,
{a1 = RandomReal[4],
  a2 = RandomReal[4],
  If[a1 >= 0 && a1 <= 1, {y1 = 0, x1 = a1}],
  If[a1 > 1 && a1 <= 2, {x1 = 1, y1 = a1 - 1}],
  If[a1 > 2 && a1 <= 3, {y1 = 1, x1 = a1 - 2}],
  If[a1 > 3 && a1 <= 4, {x1 = 0, y1 = a1 - 3}],
  If[a2 >= 0 && a2 <= 1, {y2 = 0, x2 = a2}],
  If[a2 > 1 && a2 <= 2, {x2 = 1, y2 = a2 - 1}],
  If[a2 > 2 && a2 <= 3, {y2 = 1, x2 = a2 - 2}],
  If[a2 > 3 && a2 <= 4, {x2 = 0, y2 = a2 - 3}],
  If[Sqrt[(x1 - x2)^2 + (y1 - y2)^2] >= 1/2, n = n + 1]}]
N[n/k]
这程序的运行结果为 0.714332。

TOP

返回列表 回复 发帖