找回密码
 点一下
楼主: thewisp1

好吧,各种反编译boss进来,关于【随机数 *预测* 系统】

[复制链接]
 楼主| 发表于 2009-1-29 17:20:57 | 显示全部楼层
那个开头的setrandomseed 100 只是试验作用
否则在我现在根本没有掌握算法的前提,如何证明设回种子能够消除 随机函数getrandomint对种子的影响呢?
回复

使用道具 举报

发表于 2009-1-29 17:35:18 | 显示全部楼层
看来这是楼主研究同步地图后的下一步了,或者说是下一步之一了

我顶死你,早日弄出不平衡的地图.把暴雪的1.23补丁弄出来.或者把暴雪打回1.0
回复

使用道具 举报

发表于 2009-1-29 17:44:58 | 显示全部楼层
魔兽争霸地图怪物掉宝介绍

  

比如TR龟岛
门口的小海龟会掉落的宝物有,力量手套或者敏捷鞋子或者智力斗篷或者暗影斗篷
旁边的3322那个点会掉落的宝物,
1.20版可能是紫药水(回血回魔),或者幻象或者电盾
1.21版本更新后,可能是防御+2的指环,或者攻击爪子+6或者贵族圆环(各项属性+2)加速手套
商店会掉落的宝物有:攻击+9的爪子,魔牌/血牌+150的,+2/S的回复戒指,或者防御+3的戒指
闪避护符
两个主矿中间的大海龟,会掉落的宝物同商店的宝物差不多

分矿的大海龟会掉落消耗类宝物:比如大血大魔大无敌,咆哮卷轴或者是吸魔权杖

主矿点会掉落光环类宝物,智力+6的法师斗篷或者敏捷之靴+6敏或者力量腰带力量+6,也可能是索比面具(提升魔法恢复速度)或者吸血光环天灾古钟,阿利亚之笛,风暴狮角之类的东西

至于两个最大的点,食人魔那里,会掉落一个加血的治疗神符,另外会掉落一个光环宝物,比如毁灭号角或者辉煌光环 卡嘉的烟斗(名字忘记了,呵呵)
也可能是水晶球,相当于望远镜,每隔一段时间可以侦察一下地图
火焰披风
英勇头盔(力量+4,敏捷+4
灵巧头巾 (敏捷+4,智慧+4
勇气勋章 (力量+4,智慧+4


TM
533的食人魔会掉落的宝物有防御+2的指环,或者攻击爪子+6或者贵族圆环(各项属性+2)加速手套

地精实验室:智力+6的法师斗篷或者敏捷之靴+6敏或者力量腰带力量+6,也可能是索比面具(提升魔法恢复速度)或者吸血光环天灾古钟,阿利亚之笛,风暴狮角之类的

分矿点:+150的魔牌或者血牌或者闪避护符或者攻击+9的爪子

地精商店:
会掉落智力+6的法师斗篷或者敏捷之靴+6敏或者力量腰带力量+6,也可能是索比面具(提升魔法恢复速度)或者吸血光环天灾古钟,阿利亚之笛,风暴狮角之类的

雇佣兵营地:
大血大魔大无敌,咆哮卷轴或者是吸魔权杖,死亡之书
还有一个小的永久宝物,防御+2的指环,或者攻击爪子+6或者贵族圆环(各项属性+2)加速手套

岛矿大概会掉落神圣药水(大大无敌,25秒啊),大恢复药水(恢复500生命,200魔法)
大群补回复卷轴(恢复友/己方非机械单位300生命,150魔法)
红龙之卵,野性护符,长钉衣领,岩石印记
闪电盾或者幻象
转自SOSO问问
回复

使用道具 举报

 楼主| 发表于 2009-1-29 17:51:15 | 显示全部楼层
ls贴这个干嘛?

预测是指,门口的宝物好还是坏,以决定比对手先练掉还是后练掉,拿到更好的那个。
回复

使用道具 举报

发表于 2009-1-29 18:20:27 | 显示全部楼层
不知道楼主明白不明白伪RANDOM的意思。。。。
简单点说。每个SEED会计算出一套相同顺序的数的集合。
也就是说。比方SEED设置的是1。出来的结果是1、2、3、4、5、6……。
如果SEED设2。出来的是1、3、5、7、9、11……
这个结果是指调用GETRANDOM方法出来的结果。根据调用的次数,得出该SEED下某个位置的值。
如果一开始设置的SEED是1。不管调用多少次GETRANDOMXXX。这个SEED本身是不会变的。。还是1。得出来的结果是按顺序选出来的。。。
现在,假设你设置SEED为1。调用了4次GETRANDOM。那么第5次出来的是5。当然我们可以设置SEED为2。然后调用2次GETRANDOM。然后下一次出来的数也同样是5。这样数相同的话就不会造成下一次调用GETRANDOM而不同步。。
但是,当下一次获出5以后。显然再下一次获得的就是7了。而不是原本应该出来的6。这样还是会造成数据不同步。。

这样解释不知道楼主明白不明白。。。。

SEED是不变的。变的只是调用的次数
如果楼主非要这么做的话。只能是知道最后一次设置的SEED。并且知道设置这个SEED以后调用的总次数。然后重新设置SEED为这个值。并且调用GETRANDOM函数X次。。才能做到数据同步而不掉线。。。

好吧。这样还不明白的话。显然是我个人表达能力的问题。并不是楼主的问题了。。。
回复

使用道具 举报

发表于 2009-1-29 18:21:37 | 显示全部楼层
不知道楼主懂了没有.
回复

使用道具 举报

发表于 2009-1-29 18:22:27 | 显示全部楼层
反正我是没看懂。
回复

使用道具 举报

 楼主| 发表于 2009-1-29 18:24:48 | 显示全部楼层
是的,我本来也是这么想的

那么你如何解释单方调用一次GetRandomInt就掉线了,而如果立刻把seed设回100就不掉?

设回100不掉,说明他之间曾经不是100. 这不是很简单的推理么?

莫非你认为我把seed设回100可以清零调用GetRandomInt的次数?


事实上你再仔细看一下实验结果:

最初,设种子 = 100

而后单独对某个玩家GetRandomInt,得一个数比如260

此时如果不设回去,掉线。如果设回去,不掉

这时再对所有人GetRandomInt,所有人都得260. 这分明说明了这个260是由种子100算出来的

而如果连续GetRandomInt两次,第二次就不是260了,你说种子变了还是次数变了都可以,

但次数论无法说明为什么种子设回去就好了
回复

使用道具 举报

 楼主| 发表于 2009-1-29 18:26:54 | 显示全部楼层
这个实验最重要的就是证明了只要setrandomseed正确,就能恢复后续所有随机事件的同步

而且这个同步是和seed的值强相关的,因为仅当他有唯一正确值时才能继续
回复

使用道具 举报

发表于 2009-1-29 18:27:41 | 显示全部楼层
那么★☆A 如何解释!!
回复

使用道具 举报

发表于 2009-1-29 18:27:44 | 显示全部楼层
魔兽的时代在进步··也许你们能让暴雪更早出WAR4?
回复

使用道具 举报

发表于 2009-1-29 18:28:11 | 显示全部楼层
....................................................
所以我让你在IF前后各加个GETRANDOM。
测试过后显然就有结果了。。。

理论的话。如同我说的。。。因为你设置SEED以后。全部都是第一次调用GETRANDOM...
这个时候如果你设置SEED为原来的值。显然就如同我说的”设置最后一次的SEED,并调用X次GETRANDOM“。
你这个前面设置的是100。GETRANDOM后设置的也是100。设置后调用了0次GETRANDOM。
所以显然不会掉线了啊。。。。。
回复

使用道具 举报

发表于 2009-1-29 18:28:59 | 显示全部楼层
很显然阿......
回复

使用道具 举报

发表于 2009-1-29 18:29:42 | 显示全部楼层
所以。并不是SEED的问题而已。。。。
而是。。。好吧。。。我表达能力不行。。。
改天再说。回家吃饭。。
回复

使用道具 举报

发表于 2009-1-29 18:29:57 | 显示全部楼层
引用第30楼answer-123于2009-01-29 18:27发表的  :
魔兽的时代在进步··也许你们能让暴雪更早出WAR4?
也许。。能。
回复

使用道具 举报

发表于 2009-1-29 18:30:39 | 显示全部楼层
撇下魔兽到底怎样random不说,即使能做到即时得到randomseed的技术,用来预测掉宝也不现实吧。

掉宝函数里面的random是单位被杀死后运行。。初始运行random的另外一种——随即组
那么只有在单位被灭掉的瞬间去“预测”又有多大的意义呢``
回复

使用道具 举报

 楼主| 发表于 2009-1-29 18:31:35 | 显示全部楼层
我觉得 想要完整的证明这一点 现在还不够

比较合适的方法是,先跟踪SetRandomSeed函数,来找到种子的真实位置,再看他是怎样变化的

你所说的,一个随机种子产生一个固定的无限序列,那没错,但你可知道算法是怎么写的?

他不会每次random都从最初种子值与运算次数如何如何运算再得出,因为那样总有什么时候就卡的不能动了

更常见的方法是新的种子值与上一次运算结果有关,而后每次运算只需要很简单的算法
回复

使用道具 举报

发表于 2009-1-29 18:31:37 | 显示全部楼层
虽然可以用来做更邪恶的事啦~
回复

使用道具 举报

发表于 2009-1-29 18:31:48 | 显示全部楼层
不现实吧!.
回复

使用道具 举报

发表于 2009-1-29 18:33:10 | 显示全部楼层
现在还不能完全证明呢.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-9-30 13:17 , Processed in 0.061626 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表