Project1

标题: 关于VX的随机数的疑虑 [打印本页]

作者: MSQ    时间: 2011-8-24 00:06
标题: 关于VX的随机数的疑虑
    首先我要说明一下,在VX的随机数中,到底随机数是如何随机?一般是以下三种:(其原谅我语言组织能力不强,名称也是我胡诌的)
1,伪随机1,即是由人先编出一组数,之后系统需要代入随机数时,由系统随机选一个起始,之后依次排列;
2,伪随机2,即是由人先编出一组数,之后系统随机抽取;(这种可能性非常小)
3,概率随机,例如你要得到一个随机数(例如:1~10),并条件分歧为该变量>=7(即40%概率),那么如果你得到了一个<7的数,下次出现>=7的概率就会变为80%。也就是说——随着你尝试次数的增加,概率不可抗的趋向40%。即无论你把<7的数删掉多少(比方存档读档),后边的数还是会随着前面数的出现次数而改变,使概率不可抗的保持下去;

而第一种的伪随机1则是不论前面的数是多少,下一个数>=7的概率还是40%,即采用删除的方式(存档读档),可使概率发生很大的改变,即如果你有耐心,完全可使概率接近100%或0%;而概率随机则完全做不到这一点。

希望各位大大能看懂在下的意思,并等大大好心解答~~
实在不明白请看这个帖子的讨论:
http://rpg.blue/thread-206812-1-1.html
dsu_plus_rewardpost_czw
作者: 忧雪の伤    时间: 2011-8-24 00:26
本帖最后由 忧雪の伤 于 2011-8-24 00:26 编辑

看不懂。
作者: 黑之翅膀    时间: 2011-8-24 00:28
是怎么一回事?真的有点看不懂


黑之翅膀于2011-8-24 00:30补充以下内容:
有点明白了,三个数连成一线,不分离。
A B C三只关系必需相差不会>1对吗?
作者: MSQ    时间: 2011-8-24 00:38
忧雪の伤 发表于 2011-8-24 00:26
看不懂。

其实也就是这一个问题:
到底VX的随机数是无论如何都保持在一个固定的概率波动,还是有办法改变概率。
例如火纹中一个单位升级了。他有60%的可能加力量。
伪随机1是可以通过不断存档读档(升级前存档,如果升级不加力量,那么读档;如果加了力量,那么存档),可能使力量成长率人工改成100%。因为每次升级加力量的概率都相等;
概率随机则是尽管你不断读档存档,但最后力量成长概率还是60%。因为前几次的升级会对后面的升级造成影响。

实例是火纹和DQ。
作者: 月夜神音    时间: 2011-8-24 05:53
至于VX的随机数是怎样的我不是很确定,不过有个方法可以做到这样~
记得先在游戏开始时设定变量2为10哦
  1. $game_variables[1] = rand($game_variables[2])#把变量2的数值随机带入变量1
  2. if $game_variables[1] <= 5#当变量1在60%以内
  3.   #执行加点啥的之类
  4.   $game_variables[2] = 10#重叠变量2的数值
  5. else#当变量在60%以外时
  6.   $game_variables[2] -= 2#变量2的计算数值减少20%,随即最大值变为80%,这样的话只会再80%内抽取数字
  7. end
复制代码
不知小生理解错误吗?
作者: 亿万星辰    时间: 2011-8-24 06:52
本帖最后由 亿万星辰 于 2011-8-24 07:37 编辑

楼主直接去那帖子里看我的回复吧~
其实感觉楼主的理解有点小小的偏差~
作者: 退屈£无聊    时间: 2011-8-24 08:34
第三种的概率随机也太= =.........
你想知道它是怎么随机的吗?
试试:
  1. for i in 0...10
  2.    p rand(10)
  3. end
复制代码
按你的第三种说法会出现什么情况呢?
作者: 黑之翅膀    时间: 2011-8-24 14:23
我一直在反复看那段文段,或许是我自己的理解水品太差了
作者: fux2    时间: 2011-8-24 14:50
楼主表达能力够呛的,说不清楚的话直接说你的意图就好了
作者: 黑之翅膀    时间: 2011-8-24 15:09
不知道这个帮不帮得了你
加点.zip (3.84 MB, 下载次数: 34)
作者: MSQ    时间: 2011-8-24 16:39
fux2 发表于 2011-8-24 14:50
楼主表达能力够呛的,说不清楚的话直接说你的意图就好了

意图:
升级有一定的概率加各种属性,并且可以通过存档读档的方式,使升级加的属性尽可能的多。
作者: fux2    时间: 2011-8-24 16:43
MSQ 发表于 2011-8-24 16:39
意图:
升级有一定的概率加各种属性,并且可以通过存档读档的方式,使升级加的属性尽可能的多。 ...

别人拼命防止的事情你却要让他发生= =
直接随机数就可以了,有什么问题吗?
作者: MSQ    时间: 2011-8-24 17:03
fux2 发表于 2011-8-24 16:43
别人拼命防止的事情你却要让他发生= =
直接随机数就可以了,有什么问题吗? ...
别人拼命防止的事情你却要让他发生= =


玩火纹不断凹点的同学你伤不起呀伤不起~~~~这正是这类游戏让人又爱又恨的地方。不凹点可以打得过,不过越到后面越困难,是否多走一步都要经过各种计算,一不小心就重来;不断凹点,真的很烦人,不过到了后期,一个单位就可以让敌人团灭;

直接随机数就可以了,有什么问题吗?

只不过对VX系统的随机数有了疑惑,简单一点,即:VX的随机数在游戏中是否支持凹点。

作者: 精灵使者    时间: 2011-8-24 22:59
在C语言里的随机数也有这种情况(rand(x))产生的序列是固定的——如果完全随机就无法调试了
作者: MSQ    时间: 2011-8-24 23:16
精灵使者 发表于 2011-8-24 22:59
在C语言里的随机数也有这种情况(rand(x))产生的序列是固定的——如果完全随机就无法调试了 ...

是的,所以我才说是伪随机。
作者: DeathKing    时间: 2011-8-25 00:14
这些伪随机数都是统计意义上的随机(当进行很大次数产生随机数后,每个数出现的频率几乎相等)。因为有确定的算法,所以都是伪随机数了呗。某些语言的随机实现依赖与随机数种子。有的就采用其他的伪随机数生成器。

手上没有装Ruby,没法看看rand的算法究竟是怎样的。不过有一点可以确定。每个数的期望都是几乎相同的。


DeathKing于2011-8-25 00:28补充以下内容:
说过了,是有一个确切的说法,也就是随机数函数之类的。

这有一个简易的代码,用于生成100个100以内的随机数,你可以多次统计这些数据,然后生成图表,看看他们的波动性。另外,关于Ruby随机数生成的算法,哪位手里有Ruby源码的可以帮你看下。

[url]http://codepad.org/g9BfWAo7[/url]
作者: 冰舞蝶恋    时间: 2011-8-25 10:28
第二种不伪了喵=W=
作者: wenxinaxin    时间: 2011-8-25 18:50
哇,实在是太深奥了,我一点都看不懂!555……
作者: Flash专用    时间: 2011-8-26 10:22
提示: 作者被禁止或删除 内容自动屏蔽
作者: DeathKing    时间: 2011-8-26 13:21
看来你真没有好生看我的回复。我一来就给你指出了Ruby的伪随机数至少在统计意义上的随机的。而且提供了实现,你也没尝试运行一下。

我统计了2次产生1000个随机数(100以内),数据波动如下:





所以说,这个随机数生成器的质量还是很高的。
作者: yangff    时间: 2011-8-26 13:36
时间+算法波动不解释……
作者: 亿万星辰    时间: 2011-8-26 13:56




配两个散点图~挺满意的~
作者: 896409879    时间: 2011-8-26 14:04
还有一种是获取当前毫秒数以此为种子数计算随机数。
作者: summer92    时间: 2011-8-26 15:37
随机数,就弄个随机因子,再根据随机因子生成随机数。。。这样好点吧 ,随机因子也是随机出来的
作者: MSQ    时间: 2011-8-29 12:53
我想我已经知道了答案,谢谢各位的认真讨论。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1