import random
import statistics
def reflected_walk_hits(num_steps=100_000, trials=40):
counts = []
for _ in range(trials):
x = 0
hits = 1 # start at 0
for _ in range(num_steps):
step = random.choice([-1, 1])
if x == 0 and step == -1:
x = 0
else:
x += step
if x == 0:
hits += 1
counts.append(hits)
return statistics.mean(counts), statistics.stdev(counts)
mean_hits, stdev_hits = reflected_walk_hits()
print(f"Average hits to 0: {mean_hits:.2f} ± {stdev_hits:.2f}")
aW1wb3J0IHJhbmRvbQppbXBvcnQgc3RhdGlzdGljcwogCmRlZiByZWZsZWN0ZWRfd2Fsa19oaXRzKG51bV9zdGVwcz0xMDBfMDAwLCB0cmlhbHM9NDApOgogICAgY291bnRzID0gW10KICAgIGZvciBfIGluIHJhbmdlKHRyaWFscyk6CiAgICAgICAgeCA9IDAKICAgICAgICBoaXRzID0gMSAgIyBzdGFydCBhdCAwCiAgICAgICAgZm9yIF8gaW4gcmFuZ2UobnVtX3N0ZXBzKToKICAgICAgICAgICAgc3RlcCA9IHJhbmRvbS5jaG9pY2UoWy0xLCAxXSkKICAgICAgICAgICAgaWYgeCA9PSAwIGFuZCBzdGVwID09IC0xOgogICAgICAgICAgICAgICAgeCA9IDAKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHggKz0gc3RlcAogICAgICAgICAgICBpZiB4ID09IDA6CiAgICAgICAgICAgICAgICBoaXRzICs9IDEKICAgICAgICBjb3VudHMuYXBwZW5kKGhpdHMpCiAgICByZXR1cm4gc3RhdGlzdGljcy5tZWFuKGNvdW50cyksIHN0YXRpc3RpY3Muc3RkZXYoY291bnRzKQogCm1lYW5faGl0cywgc3RkZXZfaGl0cyA9IHJlZmxlY3RlZF93YWxrX2hpdHMoKQpwcmludChmIkF2ZXJhZ2UgaGl0cyB0byAwOiB7bWVhbl9oaXRzOi4yZn0gwrEge3N0ZGV2X2hpdHM6LjJmfSIp