骰子灌铅与伪随机
拥王者吧
全部回复
仅看楼主
level 1
翟西域🐶 楼主
先明确一下伪随机的概念. 用d20举个简单的例子, 记f(a)为事件a的抛骰结果,若对于1-20间任意的一个整数i,f(a)=i的概率都是1/20,则称f具有一阶独立性. 这里f可以看成伪随机数生成器.
类似地,如果对于任意两个事件a,b,以及任意的1-20间两个数i,j,f(a)=i并且f(b)=j的概率都等于1/400,则称f具有二阶独立性.以此类推可以定义任意k阶独立性.
直观上来看,一个伪随机数生成器f具有的独立性阶数越高,那它就越接近于'真随机'.根据我的观察,毛子骰子灌铅的本质就在于独立性太差,大概只把一阶独立性做的比较好,但对于某些事件的高阶独立性非常差. 简单来说本次投骰结果会依赖于它本不应该依赖的其他投骰结果.
这导致了一个什么问题呢,读档重复尝试某个检定时,容易出现连续骰出同样数字(或者某几个数字)的情况.举个极端的例子,如果游戏的伪随机生成器只依赖于内部数据,那我每次读档如果精准地做出同样的行为,得到的骰数会是完全一致的.这里玩家在不同现实时间做出的游戏内的同一个动作,a,b,c...等等,它们的独立性会很差,只要a不巧骰不出好的数,后面所有的尝试b,c...也都骰不出.
我自己做的实验也符合这样的推测.投骰独立的假设检验做了几次,每次都被否定.经常读档20次做同一个检定,有七八次是同一个数.很有可能我在同一帧按出来的都是同一个数.因此贴吧大佬做的500次投骰实验意义也比较局限,他的设置基本只能验证一阶独立性.另外这类实验还是做假设检验比较严谨,肉眼观测都只是直觉上的,不一定对.
要解决这个问题,比较好的方法是随机数和现实时间挂钩,这样至少能很大程度缓解读档之间独立性的问题.Anyway,以上都只是猜想,实际看不到毛子具体的代码没办法断言他哪里出了问题.
2021年10月22日 16点10分 1
level 7
我记得编程里所有的随机都是伪随机,但是一般人们都不会有感觉
2021年10月23日 05点10分 3
不是一个概念。 一者是说计算机软件用特定算法弄随机性。算法目的是为了足够随机,但是可能算法不够好,以至于不够随机。 另一个是说,算法故意设计的不够随机。所谓灌铅骰子的吐槽,一般指这个
2021年10月26日 09点10分
@癸水化形 你这里说糊涂了。这层主说的没错。下面说的随机就指电脑中的伪随机而不再特别说明。一般说的灌铅骰子的吐槽是指程序中的所谓的随机性,其实并不随机,而是具有某种偏向性,这种偏向性的目的通常是为了加强游戏的可玩性而设定的,但是在设定时,为了玩家更难察觉,同时也有更坏的可能
2021年10月26日 10点10分
level 9
先明确一下伪随机的概念. 用d20举个简单的例子, 记f(a)为事件a的抛骰结果,若对于1-20间任意的一个整数i,f(a)=i的概率都是1/20,则称f具有一阶独立性. 这里f可以看成伪随机数生成器.
——这里有存疑。如果这个f(a)是一个抽象的数学存在,那这个f就是真随机数生成器。如果f(a)是某电脑编程语言的存在,不用你这样定义,它直接就是伪随机数生成器。
2021年10月26日 09点10分 4
1