web-dev-qa-db-ja.com

Python:ランダムシステムタイムシード

Pythonでは、ランダムシードジェネレータを備えたシステムにいると仮定して、代わりにrandom.seed()を取得して代わりにシステム時間を使用するにはどうすればよいですか? (/ dev/urandomが存在しないかのように)

26
Academiphile
import random
from datetime import datetime
random.seed(datetime.now())
42
Quint

できるよ

import random
import time
random.seed(time.time())
13
Elisha

このライブラリを知っていますか:PyRandLib?見る:

https://schmouk.github.io/PyRandLib/ to easily download archives versions, and
https://github.com/schmouk/PyRandLib to get access to the code.

このライブラリには、Python "ビルトイン"ライブラリランダム(ちょうど、Zipを解凍するか、ダウンロードしたものを解凍するだけ) Pythonディレクトリ)の 'Lib/site-packages /'サブディレクトリにアーカイブします。

コードとモジュール 'fastrand32.py'から、シャッフルされた現在時刻をランダムにフィードするための非常に洗練された方法が得られます。あなたの目的のために、これは次のようになります:

import time
import random

t = int( time.time() * 1000.0 )
random.seed( ((t & 0xff000000) >> 24) +
             ((t & 0x00ff0000) >>  8) +
             ((t & 0x0000ff00) <<  8) +
             ((t & 0x000000ff) << 24)   )

これは主な利点を提供します。非常に短い期間、疑似ランダムジェネレーターに供給する最初のシードは、2つの連続する呼び出し間で大きく異なります。

2
Schmouk