5

我想测试一些纸牌游戏战术,我的目标是了解女巫战术在现实生活中会更好。为此,我做了一个模拟,但我不知道我是否做了一个好的模拟。所以我想知道如何创建一个好的模拟。

您无法模拟现实生活中的每一个因素,例如虚张声势。还有一些因素是可以消除的,我尽量消除。剩下的因素,比如虚张声势,已经超出了范围。模拟那些是不可能的。

我使用我的模拟项目来比较一些策略。通过这种方式,您可以看到可以针对其他策略使用的策略。这样做的缺点是,如果您知道其他玩家的战术,您只能使用它。当您不知道可以使用什么策略来对付它时,那么您需要一台计算机来测试它。所以你只能用这个项目来回顾你的演奏风格。

这个问题不是关于创造一个“上帝战术”,而是关于编写好的模拟软件,可以用来模拟例如纸牌游戏。所以我想知道如何进行良好的模拟:

  • 我需要携带什么?
  • 你怎么知道你的模拟是一个好的模拟?
  • 我应该如何处理情况?例如生成一些随机手牌,或尝试所有可能性。
4

4 回答 4

4

回答你的三个问题:

  1. 诸如纸牌粘在一起和不同的洗牌技术之类的因素并不重要。我假设您将通过使用伪随机噪声源(如 rand())来对洗牌进行建模,以随机化牌的顺序。大多数洗牌技术可能已经足够好,这对于您的目的来说是一个完全足够的模型。

  2. 我对游戏的了解不够深入,无法知道如何简单地描述策略。您所描述的测试应该回答当它们正面交锋时哪种战术会获胜的问题。如果只有这两种策略,并且它们足够简单,可以完全实施,那么是的,你的测试会告诉你哪个更好。如果这款游戏与大多数此类游戏一样,并且涉及许多不同的策略和微妙之处,那么当这两种策略正面交锋时,知道这两种策略中的哪一种会获胜可能不会告诉你哪个策略实际上更好。

  3. 我在回答你的第二个问题时基本上涵盖了这一点,但如果你已经 100% 正确地编程了战术,那么机器人对峙的结果将很有用,因为他们会告诉你这两种策略中哪一种会更频繁地获胜当他们正面交锋时。不过,我认为在大多数这样的游戏中,仅凭这一点并不能告诉您该策略的整体效果有多好。再说一次,我对这款游戏的了解不够肯定,但如果游戏涉及许多可能的策略,那么测试可能不会告诉你太多超级有用的信息。

于 2012-07-28T21:13:21.930 回答
2

您无法使用这种模拟来证明任何事情。你真正倾向于的是模拟 A 比 B 更好,但不是他们在现实世界中的工作方式或对抗其他策略的方式。

您可以大致了解什么可能会更好或更糟,但仅此而已。

于 2012-07-28T21:23:55.130 回答
1

我的答案不是基于研究,而是我对小范围内模拟战术的想法。

这就是我进行模拟的方式:

您需要做的第一件事是确保您可以实施您想要比较的策略。如果您无法对它们进行编程,那么您就无法自行测试它们。

写下测试范围,每次有新想法都可以扩展你的项目。当你这样做时,你正在创建一个永远不会完成的项目。所以标记你想做什么并考虑每一个选项。诈唬就是一个很好的例子。进行虚张声势的模拟几乎是不可能的,你可以计算你有多少获胜的机会,但是一个正常的人会虚张声势,例如当他认为其他人会通过或他会赢时。在程序中实现“感觉”是一项艰巨的工作。并不是每个人对虚张声势都有相同的感受。但是你可以做出不同的诈唬牌(感觉),让机器人在每一种战术中使用它们。这将是很多工作,就我而言,这是不值得的。

找出你想如何比较战术。您想知道要赢多少零钱吗?或者您是否出于其他原因想做一些随机游戏?

每个游戏都有更多的方言,找出你想要遵循的一套规则。执行这些规则。如果不这样做,模拟将不正确。

执行所有战术,并尽可能使用相同的功能。这样您就可以自动测试核心功能。使用这种方法,您可以更快地完成工作,并且您会发现从未发现过的错误。

测试系统。测试对于模拟来说非常重要一个小问题可能会导致错误的结果。使用调试器检查您的代码,以了解它是否可以执行操作。制作“调试模式”,在此模式下显示每场比赛的结果并进行审查。也让其他人回顾游戏是如何进行的

于 2013-01-08T09:37:23.900 回答
0

在您的更多详细信息请求中,您要求:

什么是重要的?

怎样才能做出好的模拟?

你怎么知道它在现实生活中是相关的。

第一个问题的答案只能由游戏中的专家来回答;创建 AI 并非易事,要创建出色的 AI,您需要了解游戏中的所有策略,并且需要编写这些策略。然后您要么需要知道何时使用这些策略,要么知道你是什么人试图确定计算机循环通过所有组合。

进行良好的模拟很大程度上取决于您要实现的目标。您可以使用国际象棋方法,让 AI 播放所有可能的场景并选择最好的场景。这实际上会完全从游戏中移除策略,但它也可能会提出一些新策略;但是好的国际象棋程序使用开书之类的东西。为了模拟现实生活,您可能需要使用一些策略组合,并根据情况采取所有可能的动作。

另外,你说你不能诈唬,但这不一定是真的。如果这是游戏中的一种策略,那么您可能应该对诈唬进行编程,并尝试对诈唬做出反应。如果你打算这样做,你需要实施一个诈唬技能并检测诈唬技能以及诈唬百分比。有了它,您还可以了解对于给定的现实生活技能水平而言,虚张声势的频率是多少。如果您确实实施了虚张声势,您可能希望能够在打开或关闭它的情况下运行您的模拟。

为了测试你的模拟器,并确保它与现实生活准确,我建议让计算机面对所有已知的组合/结果,并确保结果与你在现实生活中看到的相同。之后开始循环,但慢慢增加测试,首先运行一些策略并检查结果,然后再添加一些。如果你从一开始就把所有的策略都放进去,你将很难发现其中一个不能正常工作。

于 2013-01-08T15:27:27.050 回答