在孤注一掷中的黑客技术里面,简单介绍了电影孤注一掷中用的一些"黑科技",这里继续讨论下,抛弃这些黑科技,即使在绝对公平的情况下,你也一样赢不了赌场
相对论有一个假设就是光速不变,这里也有个前提就是赌场比你有钱,而这在大多数情况下都是成立的,从你的视角来说,赌场的钱近似于无穷
还是那句经典的话,对于赌场来说,不怕你赢,就怕你不来。这里用概率的视角来验证下这句话,当你一直赌下去,你最终赢钱的概率是0,而你最终赔光的概率是1。请相信概率,相信大数定理。
随机游走问题
随机游走
𝑊
t
𝑊_{t}
Wt定义在实数轴上,起始位置
𝑊
0
=
0
𝑊_0 = 0
W0=0, 在每个整数时刻i,都会移动一个距离
s
i
s_i
si, 其中
s
i
s_{i}
si是独立同分布的随机变量,这里我们假设每个
s
i
s_{i}
si只能是+1或者-1,且概率均位1/2,离散布朗运动定义为如下公式生成的随机序列
W
t
=
W
0
+
s
1
+
s
2
+
.
.
.
+
s
t
W_{t} = W_{0} + s_{1} + s_{2}+...+s_{t}
Wt=W0+s1+s2+...+st
其中t=0,1,2…,上图表示了一次离散布朗运动。
逃逸概率
有蒙特卡洛方法方法近似随机游走过程从区间[-3,6]的上边界点6处逃逸(首次到达时间)的概率。
import random
w = 0
sum_js = 0
sequence_num = 1600
for j in range(50):
count = 0
w=0
# 从200个序列中选择选择从6处逃逸的序列,计算其占比。在边界-3或6处都会退出
for i in range(sequence_num):
while(True):
rand_num = random.uniform(0, 1)
if rand_num > 1/2:
w = w+1
else:
w = w-1
if w == 6 or w == -3:
print(w)
if(w == 6):
count += 1
print(count)
w = 0
break
sum_js += count
print(sum_js/50)
print(sum_js/50/sequence_num)
下表是运行的结果:
| n | 逃逸序列数 | 概率 |
|---|---|---|
| 200 | 65.44 | 0.3272 |
| 400 | 131.52 | 0.3288 |
| 800 | 264.54 | 0.33067500000000005 |
| 1600 | 533.84 | 0.33365 |
其中n就是代码中的sequence_num表示n次随机游走序列。没逃逸一次,无论上逃逸还是下逃逸都是一次随机游走序列。随着n值的增加,这个概率很接近1/3。这个1/3理论值。
对于随机游走模型,设a,b为正整数,一个初始位置为0的随机游走序列,首次到达[-b,a]区间边缘的时刻,就称为逃逸时间。理论证明在a处(而不是在b处)逃逸的概率是
b
a
+
b
\frac{b} {a+b}
a+bb
是想一下,如果a足够大的话,那么上面的公式就会无限接近与0。换句话说,只要你一直走下去,你最终会回到原点,而到达上边界的概率几乎就是0,而到达下边界的概率是1。同理,对于赌博也是同样的道理,只要一直玩下去,输光是必然的事情。
逃逸时间
用蒙特卡洛方法估计随机游走过程从区间[-3,6]中逃逸所需要的时间。
w = 0
sum_js = 0
for i in range(6400):
count = 0
while(True):
rand_num = random.uniform(0, 1)
if rand_num > 1/2:
w = w+1
else:
w = w-1
count += 1
print(count)
if w == 6 or w == -3:
w = 0
break
sum_js += count
print(sum_js/6400)
当n为6400的时候,平均逃逸时间是17.94625。对于从区间[-b,a]逃逸所需要的时间其期望值是ab,在这里就是3x6=18。
证明过程
这里使用蒙特卡洛模拟了逃逸的概率和时间。理论证明可以参见怎样理解随机游走过程
更过内容,欢迎关注我的微信公众号:半夏之夜的无情剑客
1803

被折叠的 条评论
为什么被折叠?



