[英]Python: Binomial distribution doesn't work when set as a variable
我正在尝试重新创建称为Dudo的骰子游戏的单人游戏版本。 最相关的信息是六个玩家有六个隐藏的骰子,游戏的目的是猜测桌上总共有多少种特定骰子(例如,如果有10个4s或12个5s等)。
为了制作一些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
是那种骰子的数量(例如六个5s或七个5s或八个5s等)。 我列出了玩家拥有的每种骰子的数量( player_dice_type
),我可以通过设置turn
和active_type
为一个特定的玩家选择一个特定的骰子。 1/3与游戏规则有关(通常骰子为1/6),但这与我的问题无关。
当我给偶然机会打电话时,它只给我提供了player_dice_type[turn][active_type] = 0
且i = 6
,因此当计算机有0个骰子时,那个骰子有6个在桌子上的可能性。
我可以调用i
和player_dice_type[turn][active_type]
并看到它们不等于6或0。问题是,如果我复制并粘贴方程式,就可以很好地工作。 我打电话给偶然性时,它仅默认为6和0。
我还尝试过创建一个chancefun(i)
函数,该函数返回原始方程式,然后说chance = chancefun(i)
。 我可以将环境中的i更改为我想要的任何值,并且chancefun(i)
会做出相应的反应,但是再次,可变的chance
不会。
我将作用域作为标记包括在内,只是因为我认为它可能以某种方式相关,但我想不起来如何。 我还尝试过将变量名从chance
更改为一堆其他事情,但仍然没有运气。
如果将chance
定义为变量,则其值在创建时是固定的。 如果您以后更改i
或其他任何值,它将不会“更新”。 您不能像定义的那样“召集”机会; 它只是一个静态值,而不是一个函数。
如果您做的chance = chancefun(i)
是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
是全局定义的变量。 你需要决定你想要什么样的价值观chance
放眼全球了,哪些要传递每个调用。
我认为这个问题有做chance
劈头计算值和持有到该值。 当一切启动时,i = 6,player_dice_type是一个空列表(稍后将用另一个函数填充)。 稍后,一旦我生成了一些数字并更改了i
,我就可以输入chance = chancefun(i)
, chance
将显示该确切值,但会再次锁定它。
我可能会继续并且不使用机会就使用机会机会(i),但是我认为将所有内容保存在一个称为chance
变量下真的很方便,因为以后我必须累加多个概率
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.