為什麼演算法中會出現magic number

時間 2021-05-09 00:23:50

1樓:李澤政

BKDRhash的131很好解釋,算不上magic number。

原理很簡單,BKDR相當於進製hash。設進製為k。普通ascii的編碼範圍是0-127,比127大的第乙個質數就是131。

那麼BKDRhash就是將原字串當作131進製,轉換成數字後再對乙個模數MOD取膜,使得最終結果對映在乙個區間[0,MOD)內。

顯然的,乙個良好的hash函式應該做到使隨機的字串平均分布在區間[0,MOD)內。

為啥k一定是質數呢?這是為了滿足k和MOD應該互質的要求。假設k和mod不互質,那麼說明k和mod之間存在公因數m,則hash進製轉換的結果很有可能也含有這個公因數m,最後使得字串取膜後的分布不平均。

2樓:

為什麼大家都拿國外的舉例子。我小時候就服祖沖之。

用開頭3個奇數1 3 5,每個重複2次。得到113355,切開來,分2段得到113和355。

355/113=3.141592920354,和圓周率的誤差小於四百萬分之一。也就是畫乙個地球赤道那麼大的圓,誤差只有10公尺。難道這個不算magic number麼?

3樓:ghost

一旦找到乙個新數字能讓你的解更優,則原來的數字就失去了意義。magic number是它符合在當前context內的最優,而目前的經驗暫時無法將它通過乙個通用公式或者函式推導出,或不值得這樣做,它已經很好的應用在工程中了。如在其他行業中,我們一般叫「經驗」。

一般都是不斷的嘗試比較,很像是機器學習裡面調整特徵權重接近最優的過程。

4樓:鄭尼瑪

我覺得magic number很多情況下就是simulation出來的最優解, 比如ML裡的 Gradient Descent, 或

Newton-like Methods 之類的沒法證明或者懶得證就叫magic

5樓:靈劍

有一些有數學原理,比如說以前寫過乙個浮點數近似演算法的分析,主要就是運用浮點數與強制轉換成的定點數之間的近似關係:log_2(浮點數)≈定點數 + 小偏置。那個小偏置的取值一般就是個Magic Number。

最終的最佳取值可能還是要經過一些實驗的。

這個求指數函式exp()的快速近似方法的原理是什麼? - 數學 - 知乎

另一些比如hash當中那個131,有一定的原理,但是還是以玄學為主

hash演算法的數學原理是什麼,如何保證盡可能少的碰撞? - 計算機 - 知乎

純隨機或者玄學的也有,比如說DHCP中間的magic number,就沒有任何特殊的意義,僅僅是乙個不太可能隨機出現的、用來表示這個協議的確是DHCP(BOOTP)的值。

6樓:SuperFashi

此所謂玄學也。

Magic Number可以有很多種:

1、經驗所得。經過多次測驗,發現這個數字可以在某種情況下最接近你最想要的結果。例子:

我平常隨機種子都用時間戳,但我有個朋友從來都用乙個特定的數字做隨機種子,往往隨機出來的結果都比我的好。

2、計算所得。這個不用說啥,例如乙個展開式中的某個係數,用於某迭代過程;或者是在預處理過程中得出的結果直接使用到最終程式中等等。例子:quake3中的sqrt。

3、規定所得。直接說例子:md5中預先存的那四個magic number。

7樓:榮耀屬於跪拜貓

quake3的magic number是用牛頓迭代算出來的乙個近似值,用來快速開方。

你說的其他的演算法不了解,但這些數的選擇很可能和數學原則有關。特別是密碼學相關的東西。

當然也可能拍了下腦門。

雜湊函式和素數

沒有人可以證明素數和偽隨機數生成器之間的關係,但是目前來說最好的結果使用了素數。偽隨機數生成器現在是乙個統計學上的東西,不是乙個確定的實體,所以對其的分析只能對整個的結果有一些認識,而不能知道這些結果是怎麼產生的。如果能進行更具體的研究,也許我們能更好的理解哪些數值比較有效,為什麼素數比其他數更有效,為什麼有些素數就不行,如果能用可再現的證明來回答這些問題,那麼我們就能設計出更好的偽隨機數生成器,也可能得到更好的雜湊函式。

8樓:趙北雲

我們之所以管magic number叫magic number 就是因為我們不知道它是啥意思啊..

PS. 你說的那個數字不算magic number 因為有一句注釋..

為什麼特效中會出現人走路浮在地面上的問題?

Angusissteak CGI最終效果涉及到特效的現場以及後期工作一般的特效拍攝是需要這麼幾個必須條件 1.實拍前景需要搭建,如真實地面,真人與地面或與其他需要互動的地方2.背景一般可以通過matte painting 投射實現3.特效拍攝前必須要有camera distortion環節,記錄鏡頭...

從邏輯上說,為什麼數學中會出現 知二證一 或者 知二證三 這種情況?

牛排包 通常人們會把滿足某些條件的東西劃分為一類。人們經常會思考,既滿足這類條件,又滿足那類條件的東西,有什麼性質?這就是多推一了。本質上是求兩個類的交集。人們還經常會思考,某個東西除了這條性質以外,還有其它啥性質?這就是一推多了。至於到底是幾推幾,有人為劃分的因素在裡面。比如滿足兩個條件,完全可以...

為什麼許多物理 數學公式中會出現三角函式?

因為很多公式推導過程中用複數表示更方便,然後就用到了尤拉公式。最後的結果也是複數形式的,但是虛數在現實世界沒有意義,被略去。所以,尤拉公式變為普通複數,忽略虛數,最後就有了三角函式。更專業的回答見 WXM 的答案,意思是一樣的。 soulmate 提這個問題的時候我的腦海裡有乙個答案,看了各位的答案...