Probability

準確描述此統計機率的最佳方法是什麼?

  • April 10, 2021

我正在為應用程序編寫一些資訊。我需要以正確但易於理解的方式表達某事發生的可能性。我對此的實際數學感到困惑。我將在這裡簡化數字。

假設一個系統有 1000 個可能的唯一程式碼,而我使用了 10 個。我設置了一台電腦以每小時一個的速度搜尋程式碼。在我找到程式碼之前統計多少小時?

從表面上看,我假設是 100 小時。但我有一種感覺,這不正確?

因此,隨機試驗的完整分析是命中的初始機率是 $ p_0=k/n $ 和 $ k=10, $ 和 $ n=1000 $ 對於你的情況。將直到第一次命中的試驗次數定義為 $ N_0 $ 這是一個具有期望的幾何隨機變數 $$ \mathbb{E}(N_0)=p_0^{-1}=\frac{n}{k}. $$ 正如您所猜測的那樣,這確實是 100。

如果您想找到 2 個程式碼,您的成功機率現在為$$ p_1=(k-1)/n $$ 並且找到第二個(不同的)程式碼的預期時間是 $$ \mathbb{E}(N_0)=p_1^{-1}=\frac{n}{k-1}, $$ 這有點長。

預計查找時間 $ r $ 因此程式碼是 $$ \mathbb{E}(N_0)+ \mathbb{E}(N_1)+\cdots+ \mathbb{E}(N_{r-1})= n\left(\frac{1}{k}+ \frac{1}{k-1}+\cdots+ \frac{1}{k-r+1}\right) $$ 這是 $ n(H_k-H_{k-r}) $ 在哪裡 $ H_k $ 是第 k 次諧波數(第一次的倒數之和 $ k $ 整數),大約是 $ \ln k $ 對於大 $ k $ . 所以總的時間複雜度大約是 $$ n \ln \left(\frac{k}{k-r}\right) $$ 為了 $ r>1. $

我假設電腦每次都嘗試一個有效的程式碼。並且您選擇了隨機使用的那些。所以“命中”的機率:-

$$ P_{\text{hit}} = \frac{10}{1,000} = 0.01 $$

因此,以每小時一次嘗試的速度,大約平均需要 $ 50 \frac{1}{2} $ 幾個小時才能找到您使用的第一個程式碼。這是第一次嘗試(一小時後)或最後一次(100 小時後)命中所用程式碼的平均值。這是一種簡化,因為我們只能談論近似平均值(不計算時間分佈 $ d(1, 990) $ ) 作為 $ P_{\text{hit}} = 1.0 $ 僅在 990 次嘗試/小時後。

隨著搜尋空間的減少,查找下一個程式碼所花費的時間會略有減少,依此類推。數量不多,但如果你有興趣,它是給數學人的。原樣 $ d $ .

引用自:https://crypto.stackexchange.com/questions/89280