Algorithm 基于回合博弈的贪心算法

Algorithm 基于回合博弈的贪心算法,algorithm,greedy,Algorithm,Greedy,我需要知道如何在纸牌游戏中实现贪婪算法 使用C#。这是一个回合制的游戏。人工智能何时发布 某些卡,必须基于其他卡的最新状态 已经在桌子上了。有人对此有解决方案吗,或者 也许可以作为我开始工作的参考?提前谢谢 现在我只完成了洗牌的代码: List<int> cards = new List<int>(); for (int j = 1; j <= 2; j++) { for (int i = 1; i <= 54; i++) {

我需要知道如何在纸牌游戏中实现贪婪算法 使用C#。这是一个回合制的游戏。人工智能何时发布 某些卡,必须基于其他卡的最新状态 已经在桌子上了。有人对此有解决方案吗,或者 也许可以作为我开始工作的参考?提前谢谢

现在我只完成了洗牌的代码:

List<int> cards = new List<int>();

for (int j = 1; j <= 2; j++)
{
    for (int i = 1; i <= 54; i++)
    {
        cards.Add(i);
    }
}

List<int> ShuffledCards = new List<int>();
Random random = new Random();

int iterations = cards.Count;
int index = 0;
for (int j = 1; j <= 2; j++)
{
    for (int i = 0; i < iterations; i++)
    {
        index = random.Next(0, iterations - i);
        ShuffledCards.Add(cards[index]);
        cards.RemoveAt(index);
    }
    iterations = cards.Count;
    index = 0;
}

ShuffledCards.Reverse(0, ShuffledCards.Count);
ShuffledCards.RemoveRange(0, 8);
ShuffledCards.Reverse(0, ShuffledCards.Count);
列表卡=新列表();

因为(int j=1;j这本书就像是一本关于人工智能的圣经。你可以从这本书的前三部分开始阅读。

我不明白你所说的贪婪算法。你不是想让经销商最大化某个目标或为某件事找到一个好的策略,是吗

这看起来更像是一个模拟纸牌游戏的问题。我们需要知道你之后真正想要做什么

伪代码:

//Your deck state:
deck   //list of cards in the deck (in top->bottom order) (initially shuffled)
i;     //index of the card at the top of the deck

void dreshuffle(){
    shuffle(cards);
    i = 0;
}

int get_card(){
    if(i >= cards.length){
        //no cards left in pile
        reshuffle()    
    }
    return cards[i++];
}
当然,这只是一个简单的例子,因为它假设庄家在重新洗牌时收回了所有的牌。也许你需要添加一堆弃牌或类似的牌,以符合你的游戏规则


顺便问一下,你的洗牌方法很奇怪。你为什么洗牌两次? 更正常的方法是

list;
n = list.count - 1 //last index in list
while(n >= 0){
    i = random integer in range [0,n] (inclusive)
    swap(list[i], list[n])
    n -= 1
}

(或仅使用库函数)

哪种纸牌游戏?你知道什么C#吗?你自己试过什么吗?这是作业吗?如果是,请添加作业标签。不,这不是作业。我只是想学习创建一个游戏。此时,我只创建了洗牌代码,并将该卡分发给游戏中的所有玩家table@user当前位置如果我的评论有点粗鲁,我很抱歉elcome to SO!我完全同意这个答案,这绝对是AI圣经。一个专门关注贪婪算法的好文件是。嗨,missingno。为什么我洗牌两次,因为游戏规则使用两副牌,每副牌54张,包括2个小丑。所以循环1是第一副牌,循环2是第二副牌。。