我正在开展一个项目,那里有一系列被拍卖的卡片;最高出价者将在拍卖中赢得最高价值的卡片。
当AI播放器轮流时,他需要评估阵列并确定其出价的估值。
忽略与验证或规则有关的任何事情;因为我已经编程并测试了这些。
我的查询更具体地说明如何关联给定数组值的值;并提出竞标价值。
在项目中,卡的范围从1 ... 30; 30是最高的。
单次拍卖可能会有6张牌,随机播放并放置"拍卖"
即:
#1 - "Card name" - Value: 1
#2 - "Card name" - Value: 3
#3 - "Card name" - Value: 30
#4 - "Card name" - Value: 15
#5 - "Card name" - Value: 24
#6 - "Card name" - Value: 18
我的问题是,计算机如何审核这些价值观,并确定了他继续提高出价,甚至提出开标价的价值?
我们知道有一些变数。
鉴于此,我已经提出了一个基本的加权解决方案。
IE:
var weight = 1.0
if roundsRemaining = 1 {
weight += 0.35
}
if weight > 1.0 {
weight = 1.0
}
然后我在0和1.0之间随机化;越接近1.0,竞标者就越有可能出价。
虽然它给了我出价的概率,但它并没有告诉我他的出价的估价。
理想情况下,我希望AI审核所提供的卡片并根据他认为最高卡片的价值进行出价(因为这是他的出价)。
这是我的查询;给出一系列带有值和已知参数的卡片; AI如何确定出价的估值。
答案 0 :(得分:1)
最简单的方法是使用Statistics :)
您可以在拍卖中对卡片进行平均,然后将该值与已知的值分布(即所有可能的套装的钟形曲线)进行比较,以找到该拍卖的p值。 p值越高,该集合越有价值,并且AI应该愿意支付它越多。
这是有效的,因为任何集合的所有值都将回归到平均值。
如果拍卖集未知,(也就是说,玩家无法在拍卖中看到所有牌),那么AI就可以猜测'基于已知的p值或记住已经看过哪些卡并将其从总分布中移除。
您可以使用此统计信息库,而不必编写自己的: https://github.com/evgenyneu/SigmaSwiftStatistics