今天,我就“程序生成”一词展开了争论。
我的观点是,它与“经典”随机生成不同,过程生成是基于更数学、基于分形的算法,算法导致了更“真实”的分布,而大多数语言的通常随机性是基于伪随机数生成器,在某种程度上导致了“不现实”,丑陋的分布。这次讨论是在考虑到高度图的情况下进行的。
然而,讨论使我对自己的论点有些不信服,那么,还有更多的吗?还是我是那个,事实上,完全错误的人?
发布于 2012-12-19 12:26:29
我觉得你错了。程序不是随机的对立面,而是手工的对立面。
它不同于“经典”随机生成,因为过程是基于更数学的、基于分形的,算法导致了更“真实”的分布,而大多数语言的通常随机性是基于伪随机数产生器的,从而导致了一种“不现实的”,在某种程度上,丑陋的分布。
您在这里描述的两种方案都是程序性的。第一种方法可以说更好、更复杂,但两者兼而有之:
现在,很可能,当人们谈论过程生成时,他们通常谈论的是的复杂发电方案精心精制的算法,但他们仍然是随机的,因为输入是一个随机变量。
你提到的“不现实的”,在某种程度上说,是丑陋的,发行版的S?这些也是程序性的--只是使用一个相对简单的过程生成机制。
发布于 2012-12-19 10:23:27
首先,根据定义,计算机所做的一切都是伪随机的,除非它实际上与放射性计数装置或类似的装置相连。不管您是否使用分形迭代系统、线性方程组或其他什么-相同的种子将产生相同的序列(这通常是好的,例如,创建可再生的测试套件)。
当然,计算机产生随机序列有好的也有坏的算法,但是什么是“现实的”(更不用说“丑陋的”)的定义绝不是没有争议的。作为一个非常基本的例子,你会天真地期望一个随机的二进制数字序列有等于0和1的值,但实际上这个定义会使所有其他项目都完全可预测,并且结果序列非常,非常可预测。
二进制数字的实际随机序列往往具有大致相等的0和1s的数量,并且随着序列的增长,这一比率趋于接近0.5,但0和1s的绝对数实际上更有可能随着时间的推移变得更加不平等。(从一百万个随机数字中准确地得到50万个0和50万个1是非常不可能的。)所以你可以看到,“随机”的定义要比“不可预测的”或“均匀分布的”要复杂得多,对于这个定义应该是什么,或者某一任务实际上需要哪些序列属性,还没有完全的共识。我不确定在标准的线性同余生成器上用分形生成器可以改进这些属性中的哪些,但我希望更有知识的人会发布一些。
发布于 2012-12-19 18:29:25
让我补充一下,在现实世界中,‘随机’和‘确定性’之间的区别是一个纯粹的主观感知的问题。-就像你说的:一些解决方案会产生“丑陋”的结果,而另一些解决方案则不会产生“丑陋”的结果。
在我所指的世界中,“随机”和“非随机”之间的实际区别基本上只有当人类观察者能够识别出所产生的输出中的一个模式时,就像一些反复出现的方案或其他方面让他意识到在下一个迭代中输出可能是什么样的。识别给定模式的能力当然在很大程度上取决于oberver的上下文:一些人可能看不到序列2, 3, 5, 7, 9, 11, 13, 17, 19, 23, 29背后的模式,而另一些人可能很快就会发现它。
因此,每一个廉价的现成的PRNG都很容易使观察者/用户相信它的输出是随机的。-或者,换句话说:当观察者无法识别系统中的因果(或输入-输出)相关性时,他的观察结果对他来说就会显得纯粹是随机的。
在我看来,问题是:
https://softwareengineering.stackexchange.com/questions/179984
复制相似问题