2017-01-17 2 views
0

擬似ランダムジェネレータを文字列で初期化したいと考えています。言って、random.seed('Lorem ipsum')のようなものを書くことができたらいいですか?擬似ランダムジェネレータを文字列で初期化する

文字列(任意の英数字文字列)を整数で変換する関数が必要です。それを行うための標準的な方法はありますか?

+2

整数の文字列(任意の英数字の文字列)をマッピングする関数 - 任意のハッシュ関数、すなわち 'md5'と' hexdigest() '? – Dmitry

+0

ありがとうございます。ハッシュ関数は必要な概念です。 (私はプログラマーではありません) –

答えて

1

random.seed(a=None) [...]なしまたはint型ではないではないか、長い間、その後、ハッシュ(A)が使用されている場合は代わりに

ますので、 を使用random.seed("Lorem ipsum")random.seed(hash("Lorem ipsum"))と同じになります

1

ドミトリーの提案だけでなく、組み込みのhash機能だけでなく、 python2 docsから

print(hash('lorem ipsum'))` # 1163776412 
+1

ちょっとメモ、python組み込みの 'hash'は暗号的に安全とはみなされず、機密データには使用しないでください。 – Aaron

+0

@Aaronそれは良い点です。 – Tagc

+0

また、stdlib乱数ジェネレータもありません... – Aaron

1

安全なハッシュの場合文字列が必要な場合は、ここに例を示します。 でより安全なハッシュ関数here

import random 
import hashlib 

def md5hash(aString):  
    #hash string using FIPS secure hash algorithm (sha256) 
    h = hashlib.sha256(aString) 
    #Convert to numeric 
    n = int(h.hexdigest(),base=16) 
    return n 

s = 'Lorem ipsum' 

h = md5hash(s) 
random.seed(h) 

print random.randint(1,h) 

のPython 2.7.9(デフォルト、2014年12月10日、午前12時24分55秒)のWin32 種類【MSC v.1500 32ビット(インテル)]「著作権"、"クレジット "または" license() "を参照してください。

================================ RESTART ========= =======================

55515536​​588238178253973576746556262163439168431854287257541058247489753668463

関連する問題