我的世界命令方块教程平方取中法产生四位伪随机分数
小编为大家带来了《我的世界》命令方块教程平方取中法产生四位伪随机分数,自然界中的理想随机便是:进行无限次执行后一种情况出现的频率=这种情况的概率。
计算机中的随机的原理都是算法,往往结果都有一种特定的趋势,因此都被归类为伪随机。
伪随机算法有很多,计算机中常用的随机函数往往都是取随机效力较高(趋势趋近真随机)并且资源消耗少的算法
而伪随机算法中有几个不变的模式:种子 公式 迭代
种子:一段变化量;
公式:使种子不按照特定规律得到另一个或一组值的公式;
迭代:重复执行公式获得最终不可预料的值。
冯·诺伊曼在1946年提出的平方取中法就是一种例子。在效率不高的当年这种随机公式效率高,但是随机效力不怎么样,适用于数值积分计算机
具体算法:
展示
模块全部
按下按钮等待计算
得到最终随机值
模块
Main():调用产生模块
Time():一个默认周期7的时钟,产生迭代次数并产生补数数值(就是补充后确保让最终数值能够顺利继续按照法则执行)
Seed():一个默认周期23的时钟,产生基数种子(在现代计算机中往往运用系统时间、文件路径、计算机名等作为种子)
SubS():截取平方的后9位
SubT():截取平方的后8位
SubD():补数
SubF():最终值
特殊原理
1.算法
算法整体原理就是把n位种子平方后的值(必须为2n位)取中间n位(n为偶数)
2.取中
为了避免20次枚举,我使用了两个模块取中,具体原理就是:
-a . +a-b . -a+2b . +a-3b ……到小于指定位数为止
3.双种子
构建方法为两个质数周期时钟。如果实在是嫌模块效率将Time每次增量设为5或3,Seed每次增量设为31以上质数。
具体方法详见模块
模块因为互相关联,为了简化所以逻辑比较复杂,因此无法一条一条分析
但是提供存档供研究:
http://pan.baidu.com/s/1pKrmFxh
查看所有1条评论>>