尝试探索无限线上的随机游走算法,我正在寻找一种方法使其尽可能最优。这是代码:
import random
from collections import Counter
def run(initial_pos,iterations,trials):
final_pos = []
for i in range (0,trials):
pos = initial_pos
for j in range (0,iterations):
if random.choice(["left","right"]) == "left":
pos -= 1
else:
pos += 1
final_pos.append(pos)
return Counter(final_pos)
变量 iterations 表示一次单次行走中的重复次数。
而Trials则表示行走的次数。
试验和迭代的运行时间令人满意,等于10^4
然而,增加到10^5需要很长的等待时间。
~1000 倍快,只需几秒钟即可完成 10^5 次试验和迭代。
def run(initial_pos,iterations,trials):
final_pos = []
for i in range (0,trials):
right = random.getrandbits(iterations).bit_count()
left = iterations - right
pos = initial_pos + right - left
final_pos.append(pos)
return Counter(final_pos)