Python: 二项分布不能当作变量时无法运行

2024-09-29 02:20:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试重新创建一个单人版的骰子游戏,叫做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),我可以通过子集turnactive_type为一个特定的玩家选择一个特定的骰子。1/3和游戏规则有关(通常骰子是1/6),但这和我的问题无关。你知道吗

当我调用chance时,它只给出ifplayer_dice_type[turn][active_type] = 0i = 6的值,所以当计算机有0个骰子时,其中6个骰子在表上的概率。你知道吗

我可以调用iplayer_dice_type[turn][active_type],看看它们不等于6或0。但问题是,如果我复制粘贴这个方程,它就可以很好地工作。当我调用chance时,它只默认为6和0。你知道吗

我也试过做一个chancefun(i)函数,返回原始方程,然后说chance = chancefun(i)。我可以将环境中的I更改为我想要的任何值,并且chancefun(i)会做出相应的反应,但是变量chance同样不会。你知道吗

我把范围界定作为一个标签,只是因为我认为它可能有某种关联,但我想不出如何关联。我还尝试过将变量名从chance改成其他一些东西,但仍然没有成功。你知道吗


Tags: 游戏typecount计算机玩家骰子dice概率
2条回答

如果将chance定义为变量,那么在创建它时它的值是固定的。如果以后更改i或其他任何值,它将不会“更新”。你不能像你定义的那样“调用”机会;它只是一个静态值,而不是一个函数。你知道吗

如果你做一些类似chance = chancefun(i)的事情,那设置机会的值,一次,就这样。Is不会以某种方式将变量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_typetotal_count是全局定义的变量。您需要决定要chance全局查找哪些值,以及每次调用要传递哪些值。你知道吗

我认为这个问题与chance一开始就计算一个值并保持该值有关。当所有东西都启动时,i=6,player\u dice\u type是一个空列表(稍后会被另一个函数填充)。稍后,我可以在生成一些数字并更改i后键入chance = chancefun(i),并且chance将显示该精确值,但再次锁定它。你知道吗

我可能会继续使用chancefun(I)而不使用chance,但我认为将所有内容保存在一个名为chance的变量下会非常方便,因为以后我必须将多个概率相加

相关问题 更多 >