Bootstrap

从【炉石传说】到矩阵运算

从“姐夫”到标量,向量与矩阵

矩阵在机器学习中是非常基础的数学知识,而对于文科出身的我,最后一堂数学课似乎还是在高三的时候(专科没有数学....)。但是,既然选择了程序猿这个职业,那么,数学终归还是逃不掉的。为了方便理解,还是从熟悉的《炉石传说》这个手游开始的,这时脑海中已经响起那句经典的一句“炉石传说真尼MA好玩!”,于是默默打打开了~~ 炉石~~Markdown笔记。这里的“姐夫”不是你姐姐的丈夫,而是炉石中的下面这张卡牌对于不熟悉这个手游的朋友我简单的介绍一下这里各个数字代表的意义

  • 左上角的2代表需要2点费用,游戏后期没用单个回合拥有10点费用

  • 左下角的3代表它有3点攻击力

  • 右下角的2代表它有2点血

标量

好接下来回到数学世界中,这里的费用,攻击力,血量都是一个数字,这个数字在数学中我们可以称为标量,写成表达式:a = 2, b = 3, c = 2。

向量

我们在游戏里可以将它简称为2,3,2(姐夫是他的爱称)。如果在数学中可以用A代表这张卡,写成公式A = (2, 3, 2), 这里的A即(2,3,2)被称为向量,因为这里有三个数代表这个向量有三个维度,分别代表费用,攻击力,血量。

这里我们是横着写的,我们通常也称为行向量,如果将这个三个数字竖着写,则称它为列向量

矩阵

在炉石的标准对战中,我们开局是有30张卡牌的。像“姐夫”这种中间有个橙色的宝石,我们将它称为“橙卡”,在一套卡组里面只能带一张,除了称卡,还有“紫卡”,“蓝卡”,“白卡”,这些卡就可以最多带两张。比如下面这张卡:

费用2点,攻击力为0(但是他的效果还是很强的),血量7。用向量表示可以写成 B = (2, 0, 7)那么如何用数学公式同时表示这两种卡

2 3 2

C =

2 0 7

不好意思,忘了如何在Markdown里面表示矩阵了,通常是写在一个中括号[ ]里面,分两行写。如果有三十张卡,那么就可以写30行有3个数组成的行向量。

最后

有人可能会问,为什要学习这些数学概念?如果我们想将炉石的卡牌转换成计算机可以识别,计算的内容的那么,转换成这种矩阵或者向量,通过Python的Numpy库来运算,在配合一些深度学习的算法,弄不好可以帮你计算一下如何才能组一套完美的卡组,这样你离上传说就不远了(很惭愧,我玩了好久,一次传说都没有上过,哎。。。)。我曾梦想有一天可以通过深度学习来让炉石自动化不是脚本,而是分析一套如何才能更适应当前环境的卡组。万一不小心被暴雪或者网易发现,是不是就走上了人生的巅峰。咳咳,醒醒吧,我还是老老实实的学数学去吧,谁让咱是文科生呢。如果你想进一步了解矩阵相关的运算,请关注持续关注一下我,谢谢支持,如果你觉得这篇文章对你有所帮助,请转发给你的朋友。