我正在尝试重新创建一个单人版的骰子游戏,叫做Dudo。最相关的信息是六个玩家有六个隐藏的骰子,游戏的重点是猜测一种骰子总共有多少个在桌子上(例如,如果有十个4s,或者十二个5s等等)。你知道吗
为了制造一些人工智能,我使用了二项式分布,计算机根据手中已有的某种模具的数量,猜测出存在某种模具的概率。我把这个等式保存在可变几率中:
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
是此类模具的编号(例如,6个5s、7个5s或8个5s等)。我有一个列表,列出了一个玩家有多少种骰子(player_dice_type
),我可以通过子集turn
和active_type
为一个特定的玩家选择一个特定的骰子。1/3和游戏规则有关(通常骰子是1/6),但这和我的问题无关。你知道吗
当我调用chance时,它只给出ifplayer_dice_type[turn][active_type] = 0
和i = 6
的值,所以当计算机有0个骰子时,其中6个骰子在表上的概率。你知道吗
我可以调用i
和player_dice_type[turn][active_type]
,看看它们不等于6或0。但问题是,如果我复制粘贴这个方程,它就可以很好地工作。当我调用chance时,它只默认为6和0。你知道吗
我也试过做一个chancefun(i)
函数,返回原始方程,然后说chance = chancefun(i)
。我可以将环境中的I更改为我想要的任何值,并且chancefun(i)
会做出相应的反应,但是变量chance
同样不会。你知道吗
我把范围界定作为一个标签,只是因为我认为它可能有某种关联,但我想不出如何关联。我还尝试过将变量名从chance
改成其他一些东西,但仍然没有成功。你知道吗
如果将
chance
定义为变量,那么在创建它时它的值是固定的。如果以后更改i
或其他任何值,它将不会“更新”。你不能像你定义的那样“调用”机会;它只是一个静态值,而不是一个函数。你知道吗如果你做一些类似
chance = chancefun(i)
的事情,那设置机会的值,一次,就这样。Is不会以某种方式将变量chance
链接到chancefunc
。你知道吗如果您想为不同的参数获得不同的机会值,请将其设置为函数并使用所需的参数调用它。比如:
我在这里假设
player_dice_type
和total_count
是全局定义的变量。您需要决定要chance
全局查找哪些值,以及每次调用要传递哪些值。你知道吗我认为这个问题与
chance
一开始就计算一个值并保持该值有关。当所有东西都启动时,i=6,player\u dice\u type是一个空列表(稍后会被另一个函数填充)。稍后,我可以在生成一些数字并更改i
后键入chance = chancefun(i)
,并且chance
将显示该精确值,但再次锁定它。你知道吗我可能会继续使用chancefun(I)而不使用chance,但我认为将所有内容保存在一个名为
chance
的变量下会非常方便,因为以后我必须将多个概率相加相关问题 更多 >
编程相关推荐