You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用nashpy计算双人博弈时如何从返回的数组列表中随机选数组

解决方法

你调用support_enumeration()得到的列表a的每一项都是双人博弈的纳什均衡策略对,结构为(玩家1策略数组, 玩家2策略数组),你需要先随机选中一个策略对,再从中提取对应玩家的策略数组即可。

你现有代码的问题在于:random.choices(a)返回的是长度为1的列表,元素是完整的策略对元组,没有进一步提取你需要的单个策略数组。

修改后的完整代码

import numpy as np
import nashpy as nash
import random

A = np.array([[1, 2], [2, 0]])
B = np.array([[0, 1], [0, -1]])
game = nash.Game(A,B)
print(game)
eqs = game.support_enumeration() 

a = list(eqs)
# 从所有均衡策略对中随机选1个,用random.choice直接返回单个元素,不需要处理列表
selected_eq = random.choice(a)
# 固定取玩家2的策略(你示例中期望的[0.66666667, 0.33333333]就属于玩家2的策略)
selected_array = selected_eq[1]
# 如果你需要随机取玩家1或玩家2的策略,替换为下行代码即可
# selected_array = random.choice(selected_eq)

print(selected_array)

补充说明

  • 索引0对应玩家1的策略,索引1对应玩家2的策略,可根据你的需求自行调整
  • random.choice直接返回序列中的单个随机元素,比返回列表的random.choices更适配当前场景

内容的提问来源于stack exchange,提问作者kill wind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 16:06:04