2016-10-07 19 views
-3

私は155kファイルのリストを持っています。私がrandom.sample(list, 100)の場合、結果は前のサンプルと同じではありませんが、類似しています。random.sampleは本当にランダムですか?

random.sampleには、ランダムな100個のファイルの新しいリストを返す良い方法がありますか?

folders = get_all_folders('/data/gazette-txt-files') 
# get all files from all folders 
def get_all_files(): 
    files = [] 
    for folder in folders: 
     files.append(glob.glob("/data/gazette-txt-files/" + folder + "/*.txt")) 

    # convert 2D list into 1D 
    formatted_list = [] 
    for file in files: 
     for f in file: 
      formatted_list.append(f) 

    # 200 random text files 
    return random.sample(formatted_list, 200) 
+2

'random'ライブラリ全体は擬似ランダムです。 half-life decay idkの短さは、おそらくネットワーク雑音の他に「真に」ランダムなものです。 –

+6

通常、ランダム性の主な問題は、ランダムなものが完全に間違っているという人間の認識です。私たちは完璧なランダム信号で「無作為」なパターンを見続けています。それは私たちの脳の仕組みです。 – spectras

+1

より確実なランダム性が必要な場合は、 'SystemRandom()'をインスタンス化してください。それでも何か問題があったとしても、ずっと前に対処されていたと考えて、この時点ではPythonのランダム性はかなり優れていると考える必要があります。 –

答えて

-1

ジェネレータをシードする必要があります。ドキュメントのhereを参照してください。

サンプルを入手する前にrandom.seed()に電話するだけです。

+0

シードは自動的に起こります。 – user2357112

+0

「モジュールが最初にインポートされたときに、現在のシステム時間はジェネレータを初期化するためにも使用されます。もしあなたが多分そうでないならば。私はそれ以外のことを述べている文書は見つかりませんでした。 –

+0

@Jim Fasarakis-Hilliard編集をありがとう。長いURLなしではるかに良い。 –

2

リストから要素を無作為に選択するなどの目的で、random.sampleを使用すると、真のランダム性は提供されず、理論的にも可能であるかどうかわかりません。

random(デフォルトでは)は、シミュレーションなどのアプリケーション(および経路リストからのピッキングなどのマイナーなもの)には適していますが、エリアでは使用しないでください。Pseudo Random Number Generator(PRNG)はMersenne Twister it is deterministicという事実のためにセキュリティが懸念されています。パイソン3.6もデフォルトでSystemRandomurandom)を使用し、cryptographically secure pseudo random numbersを生成することが可能である、PEP 506secrets.pyを導入する理由

です。

もちろん、結論はPRNGやCPRNGを使って数字を生成しても、疑似乱数になります。

関連する問題