作者mimi9126 (Presentation Error)
看板PerfectWorld
标题Re: [抱怨] 我终於理解为啥有人会怀疑有吸宝外挂了
时间Fri Jun 15 20:14:17 2007
※ 引述《gpc (gpc)》之铭言:
: 关於这个小弟我提出一些个人的看法 从科学的角度来分析吸饱的这个问题.
: 首先,一般程式设计当有"乱数"决定的时候,一般会使用这样的羽法
: int user;
: user = int(rnd() * 6)+1;
: 这样的与法会产生一个 1-6的整数存放到变数user中
: 假设A物品要归什,我们可以利用上面的程式码来产生决定一个值,这个值就是得到A物代号
: rnd()是一个取乱树的函数
: 但实际上rnd()这个函数,在程式中,经过编译之後他的动作实际上是在一个特定的"乱数表"
: 中取出一个数值.
: rnd()里面可以填入"乱树种子的标号",比方说,rnd(20)=0.156,
: 那以後我只要呼叫rnd(20)就会传回0.156,因此我们并不能说乱数表是完全的乱数
: 实际上在随机程式的编写中,选择乱树种子最容易的方式就是 timer
: timer是系统中的一个时间计数器,以秒为单位,最大为86400,也就是一天的秒数
: 随着时间 不断的在改变
: 当程式设计者使用时间(timer)做种子的时候,就会遇到一个问题
: 假设我要产生两个乱数,当这两个乱数,产生的时间相当接近,甚至可以说是瞬间的时候
: 由时间timer决定出来的种子可能会相同,导致取出来的乱数会一样
: 这就是解示根据这个原理,当有宝物产生,会有连续吸到(因为乱树种子相同),
: 或者挑拣(利用乱数种子接近的时候,剪下来的东西,会与同时间捡的人一样)
: 因此从程式开发者的角度来看,乱数随机 并非真正的乱数
: 只要你掌握住时间.随机可能真的就不是随机
: 当然我没看过也没反组译程式,并不了解分宝部分是怎麽决定,但根据编写程式
: 的经验,与大多数的随机程式处理方式,我想应该是十之八九吧
: 警功惨考~
我觉得你的说法不太能解释
现今在用来取random number的方法中,通常是利用pseudo-random number generator
而不是不停用seed来查表(应该说seed不是这样用的)
他是经过指定random seed後,得到一串数列,而依序将这个数列output当作乱数
而指定random seed最常用的方式是timer没错,但这个set seed的动作不会常做
同样的seed会产生出一样的数列没错,但一个数列中每一项之间的关系
可视为indepent(还是要视其产生数列的方法)
这样产生的乱数并不会因为时间过近而造成一直指定同一个数字
除非不停reset random seed(如果真的这样的话只能说这工程师太鸟了)
再来,我也不知道它真正分配物品的机制,但我相信绝对不是单纯的用乱数决定
他第一个一定有考虑队员之间的距离,再来如果组队打怪的时候注意一下,常会
有等级高的吸比较多东西的现象(我自己是这样觉得,但不确定一定是等级的关系)
假使除了乱数之外有用其他的参数来决定最後如何分配物品的话,这些参数就有可
能被用来动手脚
--
We know. The time of joy will pass again someday.
Then, fresh wind blows. It treasures that is happy.
too, to be sad, too. Let's repeat it eternally, and live, and go!!
maybe happy...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.251.204