python - 在 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
一直在尝试调试,但没有遇到代码问题,希望能得到一个正确方向的提示,因为我慢慢变得越来越沮丧。
提前致谢
解决方案
推荐阅读
- php - 如何在表格中选择一行并在 PHP 中回显
- blender - Blender 命令行导入文件
- elixir - 无法创建 Rumbl.Repo 的数据库:已杀死
- javascript - 到达页面顶部时如何将tr粘贴在表格中间
- c# - 无法解析类型:System.String、System.Private.CoreLib、版本 4.0.0.0 - Asp.net Core (.net core 2.1) 服务器、.NET 4.6.1 客户端
- android - 当我单击警报对话框中的 Recycler 视图项时,它显示错误:活动已泄漏窗口 DecorView@1ac0c00[] 最初添加在此处
- python - python 3.6之前有没有像__init_subclass__()这样的方法
- json - 带有 json 编码的 avro 模式 - 如何从序列化数据中确定模式
- c# - 如何在使用迁移更新数据库期间修复关键字“NOT”附近的错误语法
- c++ - 如何使用 qmake 将 pcl 库成功添加到 qt 项目中