<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SQYBI.com &#187; [Maths]</title>
	<atom:link href="http://sqybi.com/blog/archives/category/about-science/maths/feed" rel="self" type="application/rss+xml" />
	<link>http://sqybi.com/blog</link>
	<description>Change is a part of life, and takes part in finding us who we are.</description>
	<lastBuildDate>Mon, 09 Jan 2012 13:33:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>[挖坑] DotA英雄的攻击力浮动和暴击对实际输出的影响研究</title>
		<link>http://sqybi.com/blog/archives/301</link>
		<comments>http://sqybi.com/blog/archives/301#comments</comments>
		<pubDate>Wed, 16 Mar 2011 14:41:02 +0000</pubDate>
		<dc:creator>sqybi</dc:creator>
				<category><![CDATA[About Science]]></category>
		<category><![CDATA[[Maths]]]></category>

		<guid isPermaLink="false">http://sqybi.com/blog/?p=301</guid>
		<description><![CDATA[update: 严酷的魔王神牛对这个问题进行了深入的分析，并得出了初步结论，请看这里：http://blog.programet.org/2011/03/同挖坑dota中对有限血量的目标进行攻击的研究.html 前几天和恩勋讨论到这个问题，然后就一直想写个文章验证一下。 讨论问题之前，先看一下我们的模型：无视一切回血、护甲、miss、攻速、技能等，只考虑攻击力和暴击。 其中攻击力有下界x和上界y（都是整数），每次打出的攻击是x和y之间的某个整数值（包括x和y），x和y之间的每一个值都会等概率地出现。 而暴击则是基于攻击力上的随机攻击加成，包括倍率k和概率p两个属性。 这两个属性表示，在英雄的攻击中，有p的概率会是附带攻击加成的，而这个攻击加成导致此次攻击比没有暴击的相应攻击高出了k倍。 上面的描述是给打过DotA的宅男们写的。可能这种描述对于没有打过DotA的MM还是一头雾水，还是从最基本的原理来解释吧。 当然，我下面的解释都是指这个简化模型，和实际的DotA游戏会有不少区别，如果是想学习DotA陪你的GG打游戏的MM，还是不要看这个了，多打几场才是王道……扯远了。 DotA里，英雄是一个玩家控制的基本的单位。英雄本身会有一定的血量和攻击力，还可以进行攻击。被攻击的英雄会失去相当于对方攻击力的血量。 我们假设有两名英雄，英雄A和英雄B。A的血量是1000，攻击力是20；B的血量是200，攻击力是100。 这样，当A攻击B一下之后，因为A的攻击力是20，所以B会失去20的血量。这时A的血量还是1000，而B的血量减少到了180。 然后，再让B攻击A一下。因为B的攻击力是100，所以A的血量变成了900，而这时B的血量是不变的，还是180。 这就是最简单的攻击模型。 当然，为了进一步简化问题，这个模型是不考虑攻速的。也就是说，每次A和B都会同时进行自己的攻击，所以有可能两个人会同归于尽。 下面基于这个描述，再讲解一下攻击上下限和暴击的问题。 所谓攻击上下限，就是说攻击力并不是一个固定的值，而是可以上下浮动的。比如如果有一个英雄C的攻击力下限是20，上限是25，这说明这个英雄在攻击对手的时候，可能打出的实际伤害有：20、21、22、23、24、25。而这六个数值的出现是等概率的。也就是说，每次攻击伤害的数学期望是(20+25)/2=22.5。 而暴击则更复杂一些。我们用英雄A举例，A的攻击力是20。 如果A有一个20%概率的3倍暴击，那就是说： 1.A有80%的可能不打出暴击，这时A对对手造成的伤害依然是20点； 2.A有20%的可能打出暴击，这时A对对手造成的伤害是：20+20*3=80点。 可以发现，A的攻击输出的数学期望变高了。这时A每次攻击造成伤害的数学期望为：20+20*3*20%=32。 当然，攻击上下限可以和暴击组合起来。这时，会先结算攻击上下限部分，确定一个实际攻击力T；再计算此次攻击有没有出现暴击，如果有，在T的伤害基础上加上暴击的伤害。 可以发现，如果我们有两个英雄X和Y，他们每次攻击造成伤害的数学期望是一样的。那么如果他们的攻击目标Z的血量无限，在经过足够长的时间之后，他们造成的总伤害期望也应该是一样的。 但是实际上，DotA的英雄血量并不是无限的。这时就会有一个问题了，让X和Y对打的话，谁赢的几率大一些？ 之所以这篇文章是挖坑，那是因为我还没有为这个问题建立好一个数学模型。但是，我已经写了一个模拟的程序，对以上问题进行实验。实验结果如下： 1.英雄A的攻击力稳定为一个值，英雄B的攻击力上下限浮动较大，双方都没有暴击——此时A胜利的几率会更大。 2.英雄A的攻击力和英雄B的攻击力都稳定为一个值，英雄A没有暴击，英雄B有一定倍率的暴击——此时A胜利的几率会更大。 3.英雄A的攻击力和英雄B的攻击力都稳定为一个值，英雄A有一定倍率p的暴击，英雄B有一定倍率q的暴击，p&#62;q——此时B胜利的几率会更大。 从以上三个实验可以看出一个明显的结论，那就是攻击浮动越小（或者说每次攻击力更接近，或者方差更小）的英雄，有更大几率在PK中获胜。 这是为什么呢？直觉上来说，攻击浮动大的英雄更容易打出“浪费”的伤害，所以更容易输掉。但是这只是“直觉”，具体胜利的概率是多少还有待证明。 当然还有很多其它的问题。比如在我把血量调高之后，上面提到的几个实验，双方胜利场次的差距都会缩小。这个是和我们的直觉一致的——在血量为无穷的时候，两个英雄的输出应该是相等的，前文已经说过了。那么，血量对这个实验的影响又有多大呢？ 另外，我还想把暴击和攻击上下限浮动统一到一起。大概方向就是，给定自身的攻击力、暴击概率和暴击倍率以及对方的血量，计算出杀掉对方所需要的次数的数学期望。 好了，这样我就把这个大坑挖好了。欢迎任何宅男们抢在我之前来填坑，我会很高兴的。 或许对数学系的同学们来说是没有什么挑战性的课题？希望不是这样吧……真的是的话也不要bs我这个数学白痴，请大方地给出你的证明吧！]]></description>
			<content:encoded><![CDATA[<blockquote><p><span style="color: #ff0000;">update:</span> 严酷的魔王神牛对这个问题进行了深入的分析，并得出了初步结论，请看这里：<a href="http://blog.programet.org/2011/03/%E5%90%8C%E6%8C%96%E5%9D%91dota%E4%B8%AD%E5%AF%B9%E6%9C%89%E9%99%90%E8%A1%80%E9%87%8F%E7%9A%84%E7%9B%AE%E6%A0%87%E8%BF%9B%E8%A1%8C%E6%94%BB%E5%87%BB%E7%9A%84%E7%A0%94%E7%A9%B6.html">http://blog.programet.org/2011/03/同挖坑dota中对有限血量的目标进行攻击的研究.html</a></p></blockquote>
<p>前几天和恩勋讨论到这个问题，然后就一直想写个文章验证一下。</p>
<p>讨论问题之前，先看一下我们的模型：无视一切回血、护甲、miss、攻速、技能等，只考虑攻击力和暴击。<br />
其中攻击力有下界x和上界y（都是整数），每次打出的攻击是x和y之间的某个整数值（包括x和y），x和y之间的每一个值都会等概率地出现。<br />
而暴击则是基于攻击力上的随机攻击加成，包括倍率k和概率p两个属性。 这两个属性表示，在英雄的攻击中，有p的概率会是附带攻击加成的，而这个攻击加成导致此次攻击比没有暴击的相应攻击高出了k倍。</p>
<p>上面的描述是给打过DotA的宅男们写的。可能这种描述对于没有打过DotA的MM还是一头雾水，还是从最基本的原理来解释吧。<br />
当然，我下面的解释都是指这个简化模型，和实际的DotA游戏会有不少区别，如果是想学习DotA陪你的GG打游戏的MM，还是不要看这个了，多打几场才是王道……扯远了。</p>
<p>DotA里，英雄是一个玩家控制的基本的单位。英雄本身会有一定的血量和攻击力，还可以进行攻击。被攻击的英雄会失去相当于对方攻击力的血量。<br />
我们假设有两名英雄，英雄A和英雄B。A的血量是1000，攻击力是20；B的血量是200，攻击力是100。<br />
这样，当A攻击B一下之后，因为A的攻击力是20，所以B会失去20的血量。这时A的血量还是1000，而B的血量减少到了180。<br />
然后，再让B攻击A一下。因为B的攻击力是100，所以A的血量变成了900，而这时B的血量是不变的，还是180。<br />
这就是最简单的攻击模型。<br />
当然，为了进一步简化问题，这个模型是不考虑攻速的。也就是说，每次A和B都会同时进行自己的攻击，所以有可能两个人会同归于尽。</p>
<p>下面基于这个描述，再讲解一下攻击上下限和暴击的问题。<br />
所谓攻击上下限，就是说攻击力并不是一个固定的值，而是可以上下浮动的。比如如果有一个英雄C的攻击力下限是20，上限是25，这说明这个英雄在攻击对手的时候，可能打出的实际伤害有：20、21、22、23、24、25。而这六个数值的出现是等概率的。也就是说，每次攻击伤害的数学期望是(20+25)/2=22.5。<br />
而暴击则更复杂一些。我们用英雄A举例，A的攻击力是20。 如果A有一个20%概率的3倍暴击，那就是说：<br />
1.A有80%的可能不打出暴击，这时A对对手造成的伤害依然是20点；<br />
2.A有20%的可能打出暴击，这时A对对手造成的伤害是：20+20*3=80点。<br />
可以发现，A的攻击输出的数学期望变高了。这时A每次攻击造成伤害的数学期望为：20+20*3*20%=32。<br />
当然，攻击上下限可以和暴击组合起来。这时，会先结算攻击上下限部分，确定一个实际攻击力T；再计算此次攻击有没有出现暴击，如果有，在T的伤害基础上加上暴击的伤害。</p>
<p>可以发现，如果我们有两个英雄X和Y，他们每次攻击造成伤害的<strong>数学期望是一样的</strong>。那么如果他们的攻击目标Z的血量无限，在经过足够长的时间之后，他们造成的总伤害期望也应该是一样的。<br />
但是实际上，DotA的英雄血量并不是无限的。这时就会有一个问题了，让X和Y对打的话，谁赢的几率大一些？</p>
<p>之所以这篇文章是挖坑，那是因为我还没有为这个问题建立好一个数学模型。但是，我已经写了一个模拟的程序，对以上问题进行实验。实验结果如下：<br />
1.英雄A的攻击力稳定为一个值，英雄B的攻击力上下限浮动较大，双方都没有暴击——此时A胜利的几率会更大。<br />
2.英雄A的攻击力和英雄B的攻击力都稳定为一个值，英雄A没有暴击，英雄B有一定倍率的暴击——此时A胜利的几率会更大。<br />
3.英雄A的攻击力和英雄B的攻击力都稳定为一个值，英雄A有一定倍率p的暴击，英雄B有一定倍率q的暴击，p&gt;q——此时B胜利的几率会更大。</p>
<p>从以上三个实验可以看出一个明显的结论，那就是攻击浮动越小（或者说每次攻击力更接近，或者方差更小）的英雄，有更大几率在PK中获胜。<br />
这是为什么呢？直觉上来说，攻击浮动大的英雄更容易打出“浪费”的伤害，所以更容易输掉。但是这只是“直觉”，具体胜利的概率是多少还有待证明。<br />
当然还有很多其它的问题。比如在我把血量调高之后，上面提到的几个实验，双方胜利场次的差距都会缩小。这个是和我们的直觉一致的——在血量为无穷的时候，两个英雄的输出应该是相等的，前文已经说过了。那么，血量对这个实验的影响又有多大呢？<br />
另外，我还想把暴击和攻击上下限浮动统一到一起。大概方向就是，给定自身的攻击力、暴击概率和暴击倍率以及对方的血量，计算出杀掉对方所需要的次数的数学期望。</p>
<p>好了，这样我就把这个大坑挖好了。欢迎任何宅男们抢在我之前来填坑，我会很高兴的。<br />
或许对数学系的同学们来说是没有什么挑战性的课题？希望不是这样吧……真的是的话也不要bs我这个数学白痴，请大方地给出你的证明吧！</p>
]]></content:encoded>
			<wfw:commentRss>http://sqybi.com/blog/archives/301/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>数学题:对空间涂五色后存在一个平面包含四种颜色的点</title>
		<link>http://sqybi.com/blog/archives/61</link>
		<comments>http://sqybi.com/blog/archives/61#comments</comments>
		<pubDate>Fri, 10 Oct 2008 14:27:52 +0000</pubDate>
		<dc:creator>sqybi</dc:creator>
				<category><![CDATA[About Science]]></category>
		<category><![CDATA[[Maths]]]></category>
		<category><![CDATA[反证法]]></category>
		<category><![CDATA[平面]]></category>
		<category><![CDATA[数学]]></category>
		<category><![CDATA[涂色]]></category>
		<category><![CDATA[空间]]></category>
		<category><![CDATA[趣题]]></category>

		<guid isPermaLink="false">http://sqybi.com/blog/archives/61</guid>
		<description><![CDATA[今天看到的一道题,是某省某年数学竞赛二试某题.感觉挺好玩. 感谢wind牛讲解做法. 题目如下: 在三维空间的每一个点上分别涂1~5五种颜色中的一种,保证每种颜色至少有一个点被涂色.求证:一定存在一个平面,上面至少有四种不同颜色的点. 使用反证法是很显然的,那么怎么反证呢? 反白看答案(按下Ctrl+A). 假设每个平面上都至多有三种颜色的点. 首先,找到任意三个点A,B,C,使得它们分别涂有颜色1,2,3.显然它们三个共平面. 接下来,找到两个点D和E,分别涂有颜色4和5.这样,DEA所在平面与ABC所在平面(显然这两个平面不是同一个平面,因为如果这样,ABCDE已经是五种颜色了)的交线(因为它们有交点A,所以一定有交线)的交线上的点必定全部涂有颜色1.同理,平面DEB与平面ABC的交线上的点都是颜色2,平面DEC与平面ABC的交线上的点都是颜色3. 如果三条交线不两两平行,那么很显然我们可以发现两条交线的交点处的点需要同时被涂上两种颜色.那么,三条交线必定两两平行. 这样,我们做一条直线与三条交线都相交.这条直线上已经有了1,2,3三种颜色的点,只需要考虑这条直线与D构成的平面,这个平面上有四种颜色的点,与假设矛盾. 接下来考虑:是不是一定存在一个平面包含五种颜色的点呢? 这个问题实际上比上一个容易得多,答案见下(反白看): 显然这个命题是错误的. 我们可以把空间里除了ABCD四个点外的所有点都涂成颜色5,而这四个点分别涂成颜色1,2,3,4.这样,只要ABCD四点不共面,就不存在包含五种颜色的平面了.]]></description>
			<content:encoded><![CDATA[<p>今天看到的一道题,是某省某年数学竞赛二试某题.感觉挺好玩.<br />
感谢wind牛讲解做法.</p>
<p>题目如下:<br />
在三维空间的每一个点上分别涂1~5五种颜色中的一种,保证每种颜色至少有一个点被涂色.求证:一定存在一个平面,上面至少有四种不同颜色的点.</p>
<p>使用反证法是很显然的,那么怎么反证呢?<br />
反白看答案(按下Ctrl+A).</p>
<p><span style="color: #ffffff;">假设每个平面上都至多有三种颜色的点.<br />
首先,找到任意三个点A,B,C,使得它们分别涂有颜色1,2,3.显然它们三个共平面.<br />
接下来,找到两个点D和E,分别涂有颜色4和5.这样,DEA所在平面与ABC所在平面(显然这两个平面不是同一个平面,因为如果这样,ABCDE已经是五种颜色了)的交线(因为它们有交点A,所以一定有交线)的交线上的点必定全部涂有颜色1.同理,平面DEB与平面ABC的交线上的点都是颜色2,平面DEC与平面ABC的交线上的点都是颜色3.<br />
如果三条交线不两两平行,那么很显然我们可以发现两条交线的交点处的点需要同时被涂上两种颜色.那么,三条交线必定两两平行.<br />
这样,我们做一条直线与三条交线都相交.这条直线上已经有了1,2,3三种颜色的点,只需要考虑这条直线与D构成的平面,这个平面上有四种颜色的点,与假设矛盾.</span></p>
<p>接下来考虑:是不是一定存在一个平面包含五种颜色的点呢?<br />
这个问题实际上比上一个容易得多,答案见下(反白看):</p>
<p><span style="color: #ffffff;">显然这个命题是错误的.<br />
我们可以把空间里除了ABCD四个点外的所有点都涂成颜色5,而这四个点分别涂成颜色1,2,3,4.这样,只要ABCD四点不共面,就不存在包含五种颜色的平面了.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://sqybi.com/blog/archives/61/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

