火花天龙剑 -> 精华区 -> 乱数教程(版权所有《掌机王》,请勿转载)

666 2006-03-04 00:57
乱数教程

初级教程

I.何谓乱数?
乱数,即随机数,是为了判定随机事件而产生的一系列看上去没有规律的,散乱的数。从计算机产生随机数的方式来看,一般也称其为伪随机数。
可以说任何游戏,只要有随机情况的判定,就离不开乱数。
在纹章系列中,攻击是否命中、必杀或特技是否发动、升级时各项能力值是否上升,甚至是某个敌人攻击我方的哪个人,攻击时是站在被攻击者的下方还是左方(假设距离一样)这样的AI,都是通过乱数来判定的。
因为命中率、必杀率、特技发动率、成长率等等都是以百分率表示的,具体的判定方法就很简单了。假如某几率是50%,如果乱数的大小在0-49的范围内,则判为成立,否则在50-99的范围内则判为否决。判定成立,意味着对命中率来说是攻击命中,对必杀率来说是必杀发动,对成长率来说,则是某项能力的提升。

II.何谓乱数表?
既然要用乱数作随机判定,乱数就自然要存在于内存中。而乱数表就是指内存中连续存放的乱数的集合。如果这样说还是比较难理解的话,我们看一个具体实例。圣战之系谱的乱数表是由55个乱数组成的表。就是说在内存的55个连续地址中,存放了55个大小不等,范围由0-99的整数。
游戏的每一个随机判定都会消耗一个乱数。当55个乱数都用完时,游戏会用某种方法产生新的乱数表。游戏产生乱数的方法一般都不是计算机常用的生成随机数的算法。以系谱为例,只是用55个数和100之间作加减法而得到新的乱数表。虽然这样的处理方法使得随机数分别不太均匀,不过对游戏过程的影响还是基本可以忽略的。
对系谱比较熟悉的老玩家可能都有这样的印象:游戏序章一开始,无论是用ノイッシュ还是アレク攻击敌方,敌方的反击都一定会命中,尽管在シグルド的指挥下敌人的命中只有三十多。

这时因为游戏每次开始都是由以下的这张乱数表开始的。
行 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
A 64 17 15 33 15 83 41 70 98 50 90 17 85 94 36 73 41 89 82 37 44 52 80 66
B 19 61 86 55 21 49 53 53 55 80 26 95 25 40 74 32 85 50 96 75 81 75 61 13
C 14 18 74 93 13 7 84



这个由55个乱数组成的乱数表就是游戏每次开始时都会用到的第一张乱数表,称为初始乱数表。游戏中的各个随机判定将由第一个乱数开始,逐个往后消耗乱数来达成。这里有个特殊情况,仅限于游戏刚开始的这张初始乱数表,第一个乱数会被舍去。实际开始用的是第二个,即“17”。
我们来具体分析一下。
如果开始先用アレク对敌人斧男发动攻击,第一个需要判定的是攻击是否命中,这将会用“17”来作判定,因为命中率是100%,自然判为成立。而之后第二个“15”则是敌人反击的命中率。敌人的命中率是32%,17<32,所以也是判为成立,敌人的攻击也命中了。
重新load档,换为ノイッシュ先发动攻击,注意ノイッシュ比アレク多了一个特技必杀。第一个仍是命中判定,同样判为成立。而第二个则是必杀判定。因为ノイッシュ的技只有7,即必杀率为7%,15>7,故判为否决。所以ノイッシュ只作出了普通攻击。第三个是敌人反击的命中判定,乱数是“33“。而敌人的命中率刚好是36%,33<36,很不幸ノイッシュ也只能被敌人的反击打中。
从刚才的分析中,不知道大家有没有注意到,即使是100%的命中率,同样要用一个乱数来判定。这是因为根本没有必要对100%的情况作额外的特殊处理。虽然百分百命中的攻击在我们看来算不上随机事件就是了-_-。
同样值得留意的是,必杀判定是在命中判定之后的。如果攻击不命中,则会跳过必杀的判定。这也解释了为何没有落空的必杀。说的具体点,就是一次命中的攻击会消耗两个乱数,一个用于命中判定,一个用于必杀判定。而一次攻击落空,则只消耗了一个乱数用于命中判定。
游戏之后的情况也是类似的,通过不断的消耗乱数来做随机情况的判定。
对于升级,因为系谱升级时能提升的能力有8项,这就需要用连续8个乱数来逐一判定。

III.何谓凹点?
如果某次升级的结果不满意就马上save&load(以下简称S/L),直至得到一个满意的结果,这一过程称之为凹点,是纹章迷的常用词汇(其实我当地方言是叫“屈点”-_-b)
因为系谱的乱数是会保存入记录的。即使S/L重来,乱数还是原来的那些。就是说如果把S/L前的操作重复一遍,还是会发生完全一样的结果。这就必须通过改变战斗的情况来使升级用的乱数发生变化。具个最简单的例子,如果A打死敌人后升级的情况不满意,则S/L,让B先去打其他的敌人,这样必然会消耗几个乱数。再回头让A打死敌人升级,因为升级用的乱数不同了,能力的上升情况就会发生改变。

实用教程

对乱数有了一定的认识,就可以开始详细的说明封印和烈火中预测乱数,并利用乱数凹点的方法了。因为模拟器凹点的方法可以更为随意,故以下的方法都主要是针对GBA玩家的。
要利用乱数凹点,首先就是要了解游戏中乱数在哪些情况下会被消耗掉。因为封印和烈火没有了特技,自然减少了相应的乱数消耗。乱数的主要消耗是以下4个方面:战斗、升级、敌人AI和移动。

I.移动对乱数的消耗
先说说移动对乱数的消耗。这是封印和烈火特别的地方,也是用GBA也能预测乱数大小的关键所在。
游戏中人物的各种移动方式也会使用乱数。
GBA 2作中移动对乱数的消耗,其规律可以概括如下:
由移动的终点向起点移动,如果既可以水平移动又可以竖直移动(无障碍物或敌人)则消耗乱数作判定,乱数为小时水平移动一格,乱数为大时竖直移动一格,直至移动到与起点水平或竖直为止。

要通过移动来预测乱数,下面具体介绍两种方法。

1. 一次一个法
指用该法一次能预测一个乱数,是最基本的方法。
首先,让移动的光标围自己绕圈

这时只要再往上一格,箭头就会发生变化。随着变化的不同,表明消耗乱数的情况如下:

大。表示一个50-99范围内的乱数。

小。表示该乱数在0-49的范围内。
注意如果当箭头由人物的垂直方向开始出发,则表示乱数为小,否则为大。绕的方向不同,箭头的指向也会不同。而判断的依据就是箭头由人物的哪个方向开始出发。

2. 一个多个法
该法一次能判断出多个乱数。两种方法可以根据场合选择使用。

先把箭头绕成这样。只要再往右一格,箭头就会发生变化。随着变化的不同,消耗乱数的情况如下:

大。表示一个50-99范围内的乱数,是最多发的情况。

小大。表示消耗了2个乱数,分别是一个小(1-49)一个大(50-99)。

小小大。消耗了3个乱数。

小小小。消耗了3个均小于50的乱数。

注意箭头由人物的哪个方向开始出发,像下图这样的情况,其实是消耗了一个小的乱数。就是说如果转了90度,情况刚好相反。实际操作时为了避免混乱,应该始终按同一个方向绕。


小。
用此法对移动力高的骑士等职业,一次能测得更多的乱数。方法也是类似的。

通过反复以上的操作,就可以记录下随后各个乱数的大小情况。
要在GBA用移动凹点,就是要知道乱数的大小状况,并通过乱数的调整使得升级时,需要凹的能力对应判定用的乱数都是小于50的乱数。既然是对乱数的预测,那么自然不但可以用到升级上,对命中、必杀等的预测也是可以的。
要通过调整乱数影响升级,则必须对战斗和升级的乱数使用情况都有所了解。

II.战斗对乱数的消耗
下面说说战斗。因为烈火比封印多了一个瞬杀,使得情况有所不同。
封印的情况:
攻击miss消耗2个乱数,攻击命中而没有必杀消耗3个,必杀攻击也是3个。
烈火的情况:
攻击miss消耗2个乱数,攻击命中而没有必杀消耗3个,必杀攻击消耗4个乱数,瞬杀也是消耗4个。
为何会有这样的差别,结合之前系谱的分析就很好理解了。
封印的一次攻击中,头两个乱数判定命中,第三个判定必杀。而烈火则是头两个判定命中,第三个判定必杀,第四个判定瞬杀。如果没有命中则不会有必杀判定,必杀没有发动则不会有瞬杀的判定。
至于为何会使用两个乱数来判定命中?很遗憾我也还不知道。两个乱数中,有时是用第一个来判定,有时则用第二个,至于具体规律还不清楚。如果想通过乱数预测来保证命中,则应该保证两个乱数都同为小。

III.升级的乱数消耗
一次升级消耗7个乱数用于能力是否成长的判定。依次是HP、力、技、速、守备、魔防、幸运。注意幸运是排最后的。

IV.具体凹点方法
因为游戏是自动记录的,当某个人物攻击或待机被输入时,状态都会马上被记录。之后reset,也只能读回到上一次攻击或待机时的状况。而乱数的相应状况也会一并记录。不过如果只是通过移动消耗乱数,并不会马上进行记录。利用这一点,调整乱数的具体方法如下:
1. 通过移动预测出一连串乱数的大小情况。
2. 选择希望用于升级的乱数。升级会使用7个乱数,这里假设你希望的是第8至第14个乱数用于升级判定。
3. S/L。这时乱数又回复到了没有移动之前。
4. 把前面的7个乱数消耗掉,使第8个开始用于升级判定。
对于用杖或跳舞等非战斗方式升级的,很简单,只要用移动的方法把7个乱数消耗掉就可以了。而对于战斗升级的,假设敌人能被你的一次攻击打死,因为一次没有必杀的攻击是消耗3个乱数,就是说应该先用移动消耗4个乱数。这里要求首先对攻击的命中、必杀等情况作个预测。
因为敌人AI消耗乱数的情况更复杂,一般的预测和使用都是在我方的回合内进行。
利用该方法凹点,对于成长率50%以上的能力,可以保证一定提升。而对于成长率低于50%的能力,因为乱数的范围由原来的0-99变成了0-49,等于成长率提升了一倍。使7项能力的判定乱数都是小乱数是不现实也没必要的,只需保证几项重点凹的能力就可以了。

进阶教程
I. 0-99的乱数表和0-255的乱数表。
为了应付不同的随机判定,有些游戏准备了两张不同的乱数表。其中一张存放的是0-99的乱数,另一张则是0-255的乱数。比如我们熟悉的FF系列,像命中判定这类最大值是100%的随机判定仍然是使用0-99的乱数表,因为那样比较直观;而踩地雷的遇敌方式则由另外一张0-255的乱数表作判定。以FF6为例,在地图上移动时,每移动一格就会用一个0-255的乱数判定是否发生战斗,然后再用一个0-255的乱数判定敌人的种类和数量。再之后,则会用一个0-99的乱数判定战斗是先制攻击、前后夹击还是普通模式等。
而纹章系列则一贯只采用一张0-99的乱数表的形式。

II. 为什么要把乱数表的当前状态保存至游戏进度里呢?
这样做主要是为了使玩家不能通过无限反复的S/L来达到某种目的。作为系列中首次引入每回合可以S/L的系谱,这样的做法就变得有必要了。因为通过行动次序改变乱数的方法始终是有限的,把乱数表的当前状态保存至游戏进度里,起码避免了机械式的S/L来改变某个随机事件的发生情况。
其实在RPG中也有这样做的必要。拿FF2来作例子,该游戏有个所谓在大地图不遇敌的方法:走一定格数如果还没遇敌,则S/L。因为乱数表已经更新,这时再走一定格数再S/L,重复就可以一直走下去而不遇敌了。不过因为该法对游戏过程影响毕竟不大,所以到了之后的FF数作仍然没有被去掉。

III. 关于乱数的改变方式。
除了游戏的各种随机情况要用作判定的乱数外,不少游戏还有其他的使乱数改变的方式。比如776,在人物状态画面中乱数会按帧自动消耗,武器的选择过程也会消耗一个乱数。这样做主要也是为了增加变化,不让玩家轻易能抓住游戏的漏洞,利用乱数达到各种目的。其实在状态画面中消耗乱数是RPG的常用方法,比如FF5(FF6则不会)。再有就是封印和烈火的做法,不过那样的做法更像是设计者有意为玩家提供一种利用乱数的方法。注意在776中,状态画面中乱数是按帧自动消耗,即在该画面的停留时间越长消耗的乱数越多,而且对消耗乱数的个数很难加以控制。而选择攻击指令后选择一次武器是固定消耗一个乱数,可以通过反复选择来控制乱数的消耗。不过因为776没有每回合的存档,控制乱数只对模拟器的玩家有意义。FF5则是每打开一次状态画面就消耗一个乱数,与停留时间无关。

lINUXS 2004-09-16 16:10
很详细

附图就更好了```
顺便抢一

666 2004-09-16 16:14
火花现在能上传图片吗?

桂木弥生 2004-09-16 16:25
去年掌机王5的那篇吧

666 2004-09-16 16:29
是的~

拖拉机鸭776 2004-09-17 09:42
我看不是我的ZS有问题就是RP不好,反正搞了这么久的乱数只有一个收获,就是把自己给搞乱了-___-bb

DkT 2004-09-17 15:08
问一个,776中断时乱数如何改变?

666 2004-09-17 19:12
注意在776中,状态画面中乱数是按帧自动消耗,即在该画面的停留时间越长消耗的乱数越多,而且对消耗乱数的个数很难加以控制。而选择攻击指令后选择一次武器是固定消耗一个乱数,可以通过反复选择来控制乱数的消耗。

不过不知道怎么预测

史卡菲斯 2004-09-20 14:08
勉强能看懂,但是好像还不太懂用……
算了,不追求太完美了……

冰岚 2004-09-22 13:52
太艰深了,而且这样研究的话打一章估计要一周,到最后不还是照样蹂躏BOSS 拉美亚~~~拉美亚~~~~JJ的头像好象是改过的,没拉美亚好看!!

lucio 2004-09-29 11:11
随意是美,艰苦的研究也是美。

基尔雷娜 2005-01-17 13:29
........完全看不懂........有米有简单些的凹点方法......

顺带问问圣魔里面移动消耗乱数么?

wojiao27 2005-01-17 13:29
只看懂了1点

艾尔菲利亚 2005-01-19 12:34
好深奥啊~找时间好好研究一下。

zhizhi0524 2005-01-20 14:27
啊啊啊我终于弄懂了~~~~~~
不过同时也明白了:还是用SMS2吧(汗,从小算术不几格说)
以前不凹点时我的运气也不坏(10级迪克和我同桌11级迪克一样强)
还有最近练圣魔发现

[TOP]道斯 2005-01-20 18:36
除了看不懂,没什么了……汗

凰羽~凋零 2005-01-22 20:21
我以前曾经试过,不过也是不懂……我看N遍了

cat911 2005-01-22 20:22
专业,怎么研究出来。

史莱姆 2005-01-22 23:13
掌机王5上的,我没看懂,请同学还是没懂,看来这个只有深入研究才行吧。

kunoichifans 2005-01-23 11:32
是掌机王的就得顶啊

艾尔菲利亚 2005-01-24 12:39
汗,研究了一阵还没怎么懂……

冰封之梦 2005-01-24 15:42
就看懂了一丁点,但收获不小,躲着母上大人玩烈火去也!!!!

wjfejt 2005-01-24 20:52
大哥们,我问个事:
1。我经过移动(主角)得出一下乱数:
 

  小小小小小大小小大大大小小小大小大大小大大大大小大小小大。。。。。。

然后重起,让斯(女弓骑)进斗技场,没移动。对手是弓箭手:

  攻击,被打,攻击,追击,被打,攻击

然后升级加的是
 
  幸运和速度

可我按成长率表对发现对不上呀???大家帮忙解释一下!!感谢!!!!!!

Alucardhxp 2005-01-27 10:58
进斗箕场判断对手能力、武器要消耗15个乱数左右~~记得对你说过了

PS:楼上的,偏执的练级狂向你问好……

dywk 2005-01-27 18:47
关于一次判断多个乱数还不是很明白,如果是大小,大大小的话箭头会怎样?

史莱姆 2005-01-29 04:24
注意如果当箭头由人物的垂直方向开始出发,则表示乱数为小,否则为大。绕的方向不同,箭头的指向也会不同。而判断的依据就是箭头由人物的哪个方向开始出发.
就是这句“当箭头由人物的垂直方向开始出发”,什么是人物的垂直方向啊?是向数学中的X轴还是Y轴呢?应该只有这两个可能吧。

疯狂猪 2005-01-31 11:54
大家其实不必较真按样花葫芦,只要了解--明明白白消费(玩)就行了。

shellgun 2005-02-01 09:56
[color=#ff00ff][/color]以前就对乱数的有些地方不能参透.看了大个你这片文章后,真是茅塞顿开啊!不管怎样,先谢啦!~
顶个!~

simplehomer 2005-02-09 00:46
实用性不大,但原理还是要知道的,会消耗乱数就行了,多试试S/L!

尘剑一 2005-02-09 17:32
253大仙

红茶の纹章 2005-02-11 14:44
不错啊,呵呵

Chauffeur 2005-03-21 22:18
我觉得用实例请教比较好,比如这个家伙,我想他也许是圣魔里速最差的家伙了,我现在要升级了,我要求不高,我只要他能力成长3,但其中有一点必须是速,我该如何凹呢?

leaderling 2005-03-22 13:38
终于看懂了!
另:向打了那么多字的 666 JJ致敬!

花白 2005-03-22 14:53
很难阿

Lionel 2005-03-22 16:24
关于系谱凹点, 有时好象通过移动和站位来改变成长,不知道这和乱数有什么关系。

剑士阿钢 2005-03-23 00:07
学习中

凡合 2005-03-24 00:28
烈火进斗技场消耗25个乱数。
还有那上面消耗1个乱数的方法只适合移动力为奇数的人物,偶数的怎样消耗1个乱数有谁能告诉偶~~~
偶只知道利用地形效果。。。

daos 2005-03-24 00:48
我的方法是把一个人的箭头水平拉到离最长少1格时折弯,然后光标水平往回拉一格,如果改变成中间有纵向线,大概就小于50%,而且越接近人物越小.不知道这种方法对不对,反正偶数移动的也能改变乱数~自己用GBA玩觉得时灵时不灵...

凡合 2005-03-24 01:42
偶数的当然能测乱数,理论上来说只要移动力大于等于3就能测.
偶数的一次最少是消耗2个乱数(其实零也可以),偶就想问能不能消耗1乱数?

红の剑士 2005-03-24 14:46
乱数动不动就能把自己搞糊涂了,我成功算对乱数的时候只有15%

lunibbb 2006-01-19 15:14
我正好漏了几期,谢谢了.

leoaqua 2006-01-19 16:06
乱数非常实用,没有它,用GBA挑战HARD的S评价是难以想象的
其实对算术的要求一点也不高,只要会数数就行
记住个数以及各个的大小就可以了,我一开始还用笔记在纸上呢,真辛苦
不过凹出一个全成长来的成就感是非比寻常的
比方说:小艾要升级了,一个敌人被打剩1HP,小艾命中100,假设必杀率是0
根据箭头的方法测得10个乱数如下------------小小大,小小大小小大大(小即<50 大既>50)
前面3个用来判定攻击命中,从第4个开始判定升级属性的成长情况
他的成长率   HP   力   技   速   防   魔防   幸运
            80   45   50   40   30   35     45
消耗的乱数   小   小   大   小   小   大     大
那根据判定的规则,乱数小于成长率则会成长
HP肯定成长
力90%成长(45/50)
技肯定不会成长
速80%成长
防60%成长
后两项肯定不会成长


如果敌人反击或者有必杀出现则要情况复杂一点,基本情况就是这样

Lakshmi 2006-01-19 16:15
嗯,对于身为一个乱数白痴的我,这篇文章的确颇有帮助。。。

断线の风筝 2006-01-26 21:41
为什么看不见图?

jian5028 2006-01-27 17:48
我有好多问题啊,既然结果早就决定了,那么运气对我们来说不就没有意义了吗?
还有当我们进入斗技场时,不打而退出来,乱数为什么会改变啊?这样的乱数改变会有规律吗。
为什么我每次从同一个SAVE来进入斗技场再退出来乱数都一样的啊。这是不是说明了乱数的改变是有规律的?
这是我自己乱想的啊。不知怎样。希望有人教教啊

无用之斧 2006-01-27 19:51
看了这么久关于乱数的文章还是看不明白,看来偶的AI也是低啊!

leoaqua 2006-01-27 21:15
如果不看乱数直接打的话,还是要看运气的吧,因为你不知道刚好碰到什么样的乱数啊
凹乱数跟SL是五十步和百步的关系啊
因为卡带的容量有限,产生乱数的程序不能太大,又要照顾1--100每个数出现的概率差不多,很难做到啊.这不给我们完家都利用到了么(这是我个人的猜测)
进斗箕场判断敌人要消耗乱数,具体几个没数过
敌人AI行动判断也要乱数,...........
好好利用乱数作用可大了,(仅对GBA或非SL)

mosessophy 2006-01-30 15:57
昏啊!看不懂啊!今年不指望再通封印了。

断线の风筝 2006-03-03 23:28
为什么还是看不见图啊?????

一个人散步 2006-03-04 00:57
还好基本能看懂

不过真玩起游戏就不会理这些了


查看完整版本: [-- 乱数教程(版权所有《掌机王》,请勿转载) --] [-- top --]


Powered by PHPWind v3.0.1 Code © 2003-05 PHPWind
Gzip enabled

You can contact us