2017-02-11 51 views
0

Path.GetRandomFileNameは、11個のランダムな文字の暗号強力な文字列を返します。それは8文字+ドット+ 3文字のように構築されています: "b253i5vu.psf"。 charは、小文字または0〜5の数字です。したがって、可能な文字列の数は32^11です。彼らは実際にそれがどのように依存しながら、衝突の可能性は、いくつかのX値であると言うPath.GetRandomFileNameを使用する場合の衝突の可能性

  1. :ので、

    は、私の質問はすでにherehereを尋ねてきたが、答えはすべて間違っていますそこにはすでに多くのファイルがあります。たとえば、Path.GetRandomFileNameで生成された100,000個のファイルを持つdirがある場合、1000個のファイルを持つdirの場合は、衝突の可能性が高くなります。

  2. これらは、Birthday Problemを考慮していません。

可能な場合はあなたが大学レベルの数学の知識を持っていない人のための使いやすい方法で式を提示することができた場合、またはあなたがそれを計算する方法の指示を与えることができれば、私は感謝特定の値(例えば、ディレクトリに1000個のファイルがある場合など)。

が誕生日の問題forumulaを使用し、衝突の確率を計算するには、しかし、32^11の代わりに365の確率は次のとおりです:

+0

[既存のファイルの可能性の可能性のある重複] System.IO.Path.GetRandomFileName()](http://stackoverflow.com/questions/27945559/probability-of-already-existing-file-system-io-path) -getrandomfilename) –

+0

"Chances for"は "Probability of"と同義語で、 "collision"は "already existing"と全く同じ意味ですので、この質問はhttp://stackoverflow.com/questions/27945559の正確な複製です/既存のファイルシステムのio-path-getrandomfilename –

+0

ディレクトリ内の既存のファイルの問題は無関係です。既存のファイルが1000個ある場合の衝突の確率は、空のディレクトリで開始して関数を1000回呼び出して1000個のファイルを作成した場合の衝突確率とまったく同じです。 –

答えて

0

数学stackexchangeで男から助けた後、自分の質問に答える

1 - EXP((-N^2)/(2 * 32^11))NがALRたファイルの数である

eyadyはPath.GetRandomFilenameで生成されました。

WolframAlphaのようなサイトを使用して確率を簡単に計算できます。 。( - 11)

1-exp((-1000^2)/(2*32^11)) 

あなたにおよそ1.38 * 10 ^を与える:元については

は、n=1000場合、WolframAlphaの検索ボックスに次のテキストを貼り付けます。

関連する問題