import random
import numpy as np
from matplotlib.pyplot import plot, show


def random_dir(prob):
    if random.random() < prob:
        return 1
    return -1


def random_walk(prob, n):
    assert n > 0
    pos = 0
    while abs(pos) != n:
        pos += random_dir(prob)

    if pos > 0:
        return 1
    return 0


def success_rate(prob, n, tries=1000):
    assert tries > 0
    successes = 0
    for i in range(tries):
        if random_walk(prob, n) == 1:
            successes += 1
    return successes / tries


if __name__ == "__main__":
    print(success_rate(0.51, 10, 10000))

    xs = np.linspace(0, 1, 100)
    ys = [success_rate(x, 10, 10000) for x in xs]

    plot(xs, ys)
    show()
