首页 > 解决方案 > 在 M 次实验中,我最后一次被选中的频率是多少

问题描述

这可能是一个非常简单的问题,但我似乎无法理解如何回答它,另外我作为一名 Python 程序员非常新鲜。希望有指导之手。

问题如下:我有一个 n+1 个项目的数组,实验从索引 0 开始。以 0.5 的概率,我可以以 n+1 为模向右或向左移动。如果他最后被选中,则该指数获胜。总的来说,我有 M 个实验。

我的代码:

#!/usr/bin/python3
import random
import matplotlib.pyplot as plt

def simulate_game( n, m ):
    bin = [0] * (n + 1)
    results = [0] * (n + 1)
    while m != 0:
        current = 0
        for i in bin:
            bin[i] = False
        while (all(bin) == 0):
            bin[current] = 1
            randnum = random.randint(0, 1)
            if randnum == 1:
                current += 1
                if current > 0:
                    current = (current % (n+1))
            elif randnum == 0:
                current -= 1
                if current < 0:
                    current = (current % (n+1))
        results[current] += 1
        m -= 1
    for x in results:
        print(x)
    return results

# Do not change anything below this line!
def main():
    L = simulate_game( 2, 10 )
    plt.plot( L, 'bo', L,'k' )
    plt.axis( [0,2,0.5*min(L[1:]),1.5*max(L)] )
    plt.xlabel('Players')
    plt.ylabel('Wins')
    plt.grid(True)
    plt.show()

if __name__ == "__main__":
    main()

我收到的 n=5 和 m=100 的输出是不现实的:44 0 55 1 0 0

一直在尝试调试,但没有遇到代码问题,希望能得到一个正确方向的提示,因为我慢慢变得越来越沮丧。

提前致谢

标签: python

解决方案


推荐阅读