我的世界命令方塊教程平方取中法產(chǎn)生四位偽隨機分數(shù)
小編為大家?guī)砹恕段业氖澜纭访罘綁K教程平方取中法產(chǎn)生四位偽隨機分數(shù),自然界中的理想隨機便是:進行無限次執(zhí)行后一種情況出現(xiàn)的頻率=這種情況的概率。
計算機中的隨機的原理都是算法,往往結(jié)果都有一種特定的趨勢,因此都被歸類為偽隨機。
偽隨機算法有很多,計算機中常用的隨機函數(shù)往往都是取隨機效力較高(趨勢趨近真隨機)并且資源消耗少的算法
而偽隨機算法中有幾個不變的模式:種子 公式 迭代
種子:一段變化量;
公式:使種子不按照特定規(guī)律得到另一個或一組值的公式;
迭代:重復(fù)執(zhí)行公式獲得最終不可預(yù)料的值。
馮·諾伊曼在1946年提出的平方取中法就是一種例子。在效率不高的當年這種隨機公式效率高,但是隨機效力不怎么樣,適用于數(shù)值積分計算機
具體算法:
展示
模塊全部
按下按鈕等待計算
得到最終隨機值
模塊
Main():調(diào)用產(chǎn)生模塊
Time():一個默認周期7的時鐘,產(chǎn)生迭代次數(shù)并產(chǎn)生補數(shù)數(shù)值(就是補充后確保讓最終數(shù)值能夠順利繼續(xù)按照法則執(zhí)行)
Seed():一個默認周期23的時鐘,產(chǎn)生基數(shù)種子(在現(xiàn)代計算機中往往運用系統(tǒng)時間、文件路徑、計算機名等作為種子)
SubS():截取平方的后9位
SubT():截取平方的后8位
SubD():補數(shù)
SubF():最終值
特殊原理
1.算法
算法整體原理就是把n位種子平方后的值(必須為2n位)取中間n位(n為偶數(shù))
2.取中
為了避免20次枚舉,我使用了兩個模塊取中,具體原理就是:
-a . +a-b . -a+2b . +a-3b ……到小于指定位數(shù)為止
3.雙種子
構(gòu)建方法為兩個質(zhì)數(shù)周期時鐘。如果實在是嫌模塊效率將Time每次增量設(shè)為5或3,Seed每次增量設(shè)為31以上質(zhì)數(shù)。
具體方法詳見模塊
模塊因為互相關(guān)聯(lián),為了簡化所以邏輯比較復(fù)雜,因此無法一條一條分析
但是提供存檔供研究:
http://pan.baidu.com/s/1pKrmFxh
查看所有1條評論>>