我的世界命令方塊教程平方取中法產生四位偽隨機分數
小編為大家?guī)砹恕段业氖澜纭访罘綁K教程平方取中法產生四位偽隨機分數,自然界中的理想隨機便是:進行無限次執(zhí)行后一種情況出現的頻率=這種情況的概率。
計算機中的隨機的原理都是算法,往往結果都有一種特定的趨勢,因此都被歸類為偽隨機。
偽隨機算法有很多,計算機中常用的隨機函數往往都是取隨機效力較高(趨勢趨近真隨機)并且資源消耗少的算法
而偽隨機算法中有幾個不變的模式:種子 公式 迭代
種子:一段變化量;
公式:使種子不按照特定規(guī)律得到另一個或一組值的公式;
迭代:重復執(zhí)行公式獲得最終不可預料的值。
馮·諾伊曼在1946年提出的平方取中法就是一種例子。在效率不高的當年這種隨機公式效率高,但是隨機效力不怎么樣,適用于數值積分計算機
具體算法:
展示
模塊全部
按下按鈕等待計算
得到最終隨機值
模塊
Main():調用產生模塊
Time():一個默認周期7的時鐘,產生迭代次數并產生補數數值(就是補充后確保讓最終數值能夠順利繼續(xù)按照法則執(zhí)行)
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條評論>>