4-概率论中的有趣问题(2)

概率论中还有许许多多有趣的例子,因此这篇文章就是上一篇文章的续篇

1. 利用几何概率求

作为古典概率中的一类问题,几何概率其思想是通过计算事件A的面积占整个样本空间的面积的比值,来等价估算事件A发生的概率。即

那么我们是否可以利用几何概率的思想来估计呢?完全可以!如果假设两个随机变量x与y均匀分布在(-1,1)的空间坐标中,而x与y组成的坐标点落在半径为1的圆内的几率即为。而这个半径为1的圆又可以表示为。

话不多说,直接附上代码。

import random
from matplotlib import pyplot as plt 
import numpy as np 

iterations = 100000
x = np.arange(iterations)
y = np.zeros(iterations)
ans = 0
for i in range(iterations):
    est_x = random.uniform(-1,1)
    est_y = random.uniform(-1,1)
    if est_x ** 2 + est_y ** 2 <= 1:
        ans += 1
    y[i] = ans/(i+1)
# pi_estimate = sum(y[iterations-2:])/2*4 #average the last two as the result
pi_estimate = sum(y[-10:])/10*4 # 选取最后10个结果的平均值作为pi的估计值
print(pi_estimate)
plt.xlabel("Number of iterations")
plt.ylabel("Chances of getting inside circle")
plt.xlim(0,iterations)
plt.ylim(3.1, 3.2)      #为了把结果看得更清楚,我们将y轴坐标限制在3.1~3.2之间
plt.scatter(x,y*4, s=1, color='g',marker='o', alpha=0.5)
plt.show()
十万次模拟之后Pi的估计值

最后十个模拟结果(我们假定经过十万次模拟之后结果趋于一个稳定值)的平均值是3.1412253550324722 (当然这个值每次都会有点波动啦),我们知道值大概是3.1415926....所以从这个角度看,进行十万次模拟,好像也才精确到小数点后3位,不过与的相对误差大约是0.011%,从这个角度来看,模拟结果好像也还不错?

2. 扔硬币大赛,你能扔出多少次连续的正面?

如果稍微有一些概率论基础的童鞋,大家肯定都听过一句话,概率很小的事件,在一次试验中实际上几乎是不会发生的。当然,几乎不会发生不代表不会发生,就好像去买彩票,虽然对于每一个人来说中彩票的几率特别小,但是每一期都有幸运儿能够领着大奖,登上人生巅峰。

再举个扔硬币的例子,我想大家都知道,扔硬币的过程之中连续十次正面朝上是一个概率非常之小的事件。

但是如果我们扔10000次呢?

这里我做了一个简单的模拟,每次扔10000次硬币,统计其中连续正面朝上最多的次数,并且重复进行100轮循环,那么结果究竟如何?

from matplotlib import pyplot as plt  #引入Matplotlib库函数 
import numpy as np 
from random import randint

# count the maximum consecutive 1s

outer = 100 
x = np.arange(outer)
y = np.zeros(outer)
iterations = 10000  # 设置循环次数 
for j in range(outer):
    ans = 0
    count = 0
    for i in range(iterations):
        result = randint(0,1) # 随机生成结果,在这里将1 当做是正面
        if result == 0: 
            count = 0
        else:
            count += 1
            ans = max(count, ans)
    y[j] = ans

plt.xlabel('iteration times')
plt.ylabel('Maximum 1s')
plt.scatter(x, y, c='r', marker = 'o')
plt.show()
print(sum(y)/outer)

那么模拟结果如何呢?我们来看下模拟结果吧~

100轮模拟实验中连续正面朝上次数

可以看见 ,在这100轮重复试验中,至少出现1次连续11次~13次正面朝上的事件其实相当常见。而最为极端的一个例子呢,出现了20次连续正面朝上的事件。

同样是重复100轮试验,如果连续扔10次,100次,1000次,连续正面朝上次数的平均结果有什么区别吗?

  • 扔10次:连续2.81
  • 扔100次:连续6.05
  • 扔1000次:连续9.28
  • 扔10000次:连续12.54次

这里可以发现,连续正面朝上的次数大概是与扔硬币次数的对数成正比。我想这后面一定有一个数学公式可以预测/总结这个结果,可惜我姿势水平还是不高,没有办法做出进一步解答。那么这个问题就先写到这里吧~

你可能感兴趣的:(4-概率论中的有趣问题(2))