我试图重新制作一个名为Dudo的骰子游戏的单人游戏版本。最相关的信息是六个玩家有六个隐藏的骰子,而游戏的目的是猜测桌面上有多少个骰子(例如,如果有十个4,或十二个等等)。
为了制作一些AI,我使用二项式分布,其中计算机猜测存在某种数量的某种骰子的概率,这取决于它手中已有多少种骰子。我把这个等式保存在变量机会中:
chance = ((1/3) ** (i - player_dice_type[turn][active_type])) * ((2/3) ** (total_count - i - player_count[turn] + player_dice_type[turn][active_type]))
i
是这种骰子的数量(例如六个5,或七个5,或八个5等)。我列出了玩家拥有的每种骰子的数量(player_dice_type
),我可以通过对turn
和active_type
进行子集来为特定玩家选择特定骰子。 1/3与游戏规则有关(通常它是骰子的1/6),但这无论如何都与我的问题无关。
当我打电话给机会时,它只给我{if player_dice_type[turn][active_type] = 0
和i = 6
的值,所以当计算机有0时,该骰子的6个概率就在桌面上。< / p>
我可以调用i
和player_dice_type[turn][active_type]
并看到它们不等于6或0.但事情是,如果我复制并粘贴等式,它的效果非常好。当我打电话时,它只默认为6和0。
我还尝试制作一个返回原始等式的chancefun(i)
函数,然后说chance = chancefun(i)
。我可以将环境中的i更改为我想要的任何内容,chancefun(i)
会做出相应的反应,但变量chance
不会再做出反应。
我将范围界定为标记只是因为我认为它可能在某种程度上是相关的,但我无法想到如何。我还尝试将变量名称从chance
更改为其他一些内容但仍然没有运气。
答案 0 :(得分:1)
如果您将<input type="button" style="float:right" value="Go">
</div></form>
定义为变量,则在创建它时它的值已得到修复。它不会更新&#34;如果您以后更改chance
或其他任何值。你不能打电话给#34;你已经定义的机会;它只是一个静态值,而不是一个函数。
如果您执行i
之类的操作,则设置偶然值,一次,以及它。是不是&#34;链接&#34;不知何故,变量chance = chancefun(i)
到chance
。
如果您想为不同的参数获得不同的机会值,请将其设为函数并使用您想要的参数调用它。类似的东西:
chancefunc
我假设def chance(i, turn, active_type):
return ((1/3) ** (i - player_dice_type[turn][active_type])) * ((2/3) ** (total_count - i - player_count[turn] + player_dice_type[turn][active_type]))
和player_dice_type
是全局定义的变量。您需要确定您希望total_count
全局查找哪些值以及您希望在每次调用时传递哪些值。
答案 1 :(得分:0)
我认为这个问题与chance
在一开始就计算一个值并保持该值有关。当一切都启动时,i = 6并且player_dice_type是一个空列表(稍后用另一个函数填充)。之后,我可以输入chance = chancefun(i)
一旦我生成了一些数字并更改i
,chance
将显示该确切的值,但再次锁定它。
我可能只是继续使用机会(i)而不使用机会,但我认为将所有内容保存在一个名为chance
的变量下非常方便,因为后来我和#39 ; d必须加起来多个概率