我正在进行一个项目,其中有一组卡片在进行拍卖,最高出价者将赢得拍卖中价值最高的卡片。
当AI玩家轮到他时,他需要评估这组卡片,并确定他的出价估值。
忽略与验证或规则相关的所有内容,因为我已经编程并测试了这些部分。
我的问题更具体地是,如何为给定的一组值关联一个价值,并得出一个出价值。
在项目中,卡片的范围是从1到30,其中30是最高的。
在一次拍卖中,可能会有6张卡片,被洗牌并放置在“拍卖中”
例如:
#1 - "卡片名称" - 价值: 1#2 - "卡片名称" - 价值: 3#3 - "卡片名称" - 价值: 30#4 - "卡片名称" - 价值: 15#5 - "卡片名称" - 价值: 24#6 - "卡片名称" - 价值: 18
我的问题是,计算机如何审查这些值,并决定继续提高出价或提出初始出价的价值是多少?
我们知道一些变量。
- 所有参与拍卖的卡片
- 手头的现金
- 剩余的拍卖轮数(目前假设有6轮拍卖)
鉴于此,我提出了一种基本的加权解决方案。
例如:
var weight = 1.0if roundsRemaining = 1 { weight += 0.35}if weight > 1.0 { weight = 1.0 }
然后我在0到1.0之间随机化;越接近1.0,出价的玩家就越有可能出价。
虽然这给了我一个出价的概率,但它并没有告诉我出价的估值。
理想情况下,我希望AI能够审查提供的卡片,并根据他认为最高卡片的价值来出价(因为这是他要竞标的)。
这就是我的问题;给定一组具有值的卡片和已知参数,AI如何确定出价的估值。
回答:
最简单的方法是使用统计学 🙂
你可以计算拍卖中卡片的平均值,然后将该值与已知的值分布(即所有可能集合的钟形曲线)进行比较,以找到该拍卖的p值。p值越高,集合的价值就越高,AI应该愿意为它支付的金额就越多。
这是有效的,因为任何集合的所有值都会回归到平均值。
如果拍卖集合未知,(也就是说,玩家无法看到拍卖中的所有卡片),那么AI可以根据已知的p值进行“猜测”,或者记住已经看到过的卡片并从总分布中移除它们。
你可以使用这个统计库,而不是自己编写:https://github.com/evgenyneu/SigmaSwiftStatistics