首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查3D numpy数组中的索引

检查3D numpy数组中的索引
EN

Stack Overflow用户
提问于 2014-10-09 14:36:07
回答 1查看 117关注 0票数 1

我正在编写代码,通过命令行和一个人一起玩一个名为的骰子游戏。

对于计算机的玩家,我使用一个3D的numpy数组来存储一个基于信息当前分数AI_1_current,银行得分AI_1_bank和对手银行得分human_bank的游戏策略。

这个想法是,每转一圈,计算机就会检查策略数组,如果索引AI_1_current,AI_1_bank,human_bank的值等于0,它会继续滚动,如果它等于1,它会保存它当前的分数。

现在,我遇到的问题是,让计算机轮流操作的函数不是正确地读取数组,而不是在需要的时候进行银行操作。

我有这样的代码来设置数组:

代码语言:javascript
运行
复制
AI_1_strategy = numpy.zeroes((100,100,100))

for i in range(10, 100):
    for j in range(10, 100):
        for k in range(10, 100):
            AI_1_strategy[i, j, k] = 1

理想情况下,这意味着,如果i,j或k大于或等于10,计算机将存储每一个回合。

然后,我有下面的代码来检查数组:

代码语言:javascript
运行
复制
if AI_1_strategy[AI_1_bank, AI_1_current, human_bank] == 1: 
    AI_1_bank += AI_1_current # add current points to the bank
    AI_1_current = 0
    time.sleep(3) # 3 second delay

   if AI_1_bank >= 100: # win condition
        print "AI_1 WINS!"
    else:   
        AI_current = 0 # sets current points to 0
        print "AI has banked"
        pig_human() # moves to the player's turn

else:
    time.sleep(3) # 3 second delay
    print "AI_1 chose to keep rolling"
    pig_AI_1() # AI takes another roll

尽管有这样的代码,计算机还是不能一贯地存钱。

如果我选择这样做,问题也会发生:

代码语言:javascript
运行
复制
AI_1_strategy = numpy.ones((100,100,100))

for i in range(10, 100):
    for j in range(10, 100):
        for k in range(10, 100):
            AI_1_strategy[i, j, k] = 0

除了这种情况,它将银行的每一个回合,无论分数,当它真正应该停止银行业务,一旦我,j或k达到10。

如果有人能帮我,我会非常感激的,我不知道我做错了什么。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-09 22:50:48

看起来你犯了一个小小的逻辑错误。

我有这样的代码来设置数组: AI_1_strategy =numpy.zeroes(100,100,100),i在范围(10,100):j在范围(10,100):k在范围内(10,100):AI_1_strategyi,j,k=1 理想情况下,这意味着,如果i,j或k大于或等于10,计算机将存储每一个回合。

这是不正确的:每一个i、j和k都必须是>=10,才能从这个数组读取一个1。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26281204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档