有没有办法让在一维空间中探索随机游走的代码更加优化? (没有嵌套的 for 循环)

问题描述 投票:0回答:1

尝试探索无限线上的随机游走算法,我正在寻找一种方法使其尽可能最优。这是代码:

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需要很长的等待时间。

python optimization nested-loops random-walk
1个回答
0
投票

~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)
© www.soinside.com 2019 - 2024. All rights reserved.