2011-08-11 11 views
1

乱数を生成するにはどうすればよいですか? 私は何千もの数のセットを持つTXTファイルを持っており、これらを避けながら一連の乱数を生成する必要があります。すでに使用されている数字を避けながら乱数を生成する方法

IE、TXT-0102030405
私の乱数はこの番号を避ける必要があります。

サイドノートでは、TXTの10桁の数字を5桁の数字に分割するにはどうすればよいですか? それから、どのように乱数を生成することができますか?

+0

random_number not in number_set 

あなたがスライスを使用することができます番号を分割するには5桁の数字に基づいて乱数を生成しますか?あなたはこれらの5桁の数字を避けることを意味しますか?注釈の – arunkumar

+0

では、txtドキュメントのすべての数字はCSVです。 これらは次のようになります。 "0102030405" 1 "0202030405" 4 – mike

+0

はい、TXT番号全体を避ける必要があります。 – mike

答えて

1

以前に見つかったすべての乱数を辞書にロードし、辞書内のnew_randomが新しい乱数を試しているかどうかを確認するだけです。

あなたの10桁の数字が変数ten_digitsに格納されているとします。

ten_digits = '1234567890' 

あなたがIDとして数字を使用してい

[x + y for x, y in zip(ten_digits[::2], ten_digits[1::2] 
>>> ['12', '34', '56', '78', '90'] 
+3

yo sam、スタックオーバーフローから降りてください。あなたは仕事をしていると思われます。 – Jim

+0

[10,12,21,32,45] 乱数ジェネレータが:10 12 20 20 012 の場合、10と12のためにチェックが失敗しますか? – mike

+0

最初の数字はX、3番目はYであることがわかります ['X'、??。 'Y'、??、??] 私の乱数は、 3か所。 私は別にそれを行うことができると思います... – mike

0

を行うことによって5つの2桁の数字にこれを破ることができますか?おそらく、ハッシュテーブルの使用を検討する必要があります。

http://en.wikipedia.org/wiki/Hash_table

私は、Pythonとひどく慣れていないが、私はあなたが(引数として)コピーする部分文字列と文字の数を開始するインデックスをそれを与えることができSUBSTRING関数があると確信しています。

1

ファイルを維持する必要がある場合は(新しい番号を追加するために)、私はプレーンテキストファイルを使用して "忘れ"て、SQLiteやその他の埋め込まれたDBおそらくメモリ内のすべての数値をロードしたくないからです。

SQLiteの "機能"(またはそれより優れたデータ構造)はBツリーであるため、数字をすばやく取得できます。私はこれを言っています。なぜならBツリーを実装するライブラリを見つけようとすると、SQLiteが必要ないからです。

0

あなたはあなたのリストが比較的小さい場合は、setにそれをロードし、それに対してチェックできます:あなたが何を意味するん

s='0102030405' 
n=2 
result = [s[i:i+n] for i in range(0, len(s), n)] 
関連する問題