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