<p>我正在模拟一个无限的模具滚动序列来计算一个序列的平均“命中时间”。在这个特殊的情况下,我寻找的是“11”或“12”的第一次出现。例如,在“34241213113…”中,“12”第一次出现在时间6,“11”第一次出现在时间10。这是我的python代码。你知道吗</p>
<pre><code>import numpy as np
NN=1000000
t11=np.zeros(NN)
t12=np.zeros(NN)
for i in range(NN):
prev=np.random.randint(1,7)
flag11=True
flag12=True
ctr=2
while flag11 or flag12:
curr=np.random.randint(1,7)
if flag11 and prev==1 and curr==1:
t11[i]=ctr
flag11=False
if flag12 and prev==1 and curr==2:
t12[i]=ctr
flag12=False
ctr=ctr+1;
prev=curr
print('Mean t11: %f' %(np.mean(t11)))
print('\nMean t12: %f' %(np.mean(t12)))
</code></pre>
<p>一旦两个序列都被观察到,我们就开始一个新的样本。在期望值收敛到理论值(42表示“11”,36表示“12”)之前,需要大约一百万个样本路径。代码运行大约需要一分钟。我是python新手,使用python才一个月。你知道吗</p>
<p>我想知道是否有一种加速代码的方法,也许是一种不同的算法,或者是优化例程?它在编译语言和解释语言上会有显著不同的性能吗?我是</p>