2016-03-25 9 views
-4

アルファベットと数字のユニークな大文字と小文字の12文字の文字列を生成するPythonアルゴリズムを作成するにはどうすればよいですか?ランダムな長さは大文字と小文字のアルファベットと数字で構成された12文字列です

私の状況では、と思われるユニークなセッション/キー識別子として使用されます。は、500K世代を超えるユニークである必要があります。例えば

837uNNM9abCb 

9HFRHcop24Cd 

ありがとう!

+2

あなたがこれを書いて自分を止める何? –

+4

は[UUID]のための仕事のような音(https://docs.python.org/3.5/library/uuid.html )、何を試しましたか? – ChrisP

+0

@MitchWheat私はすでにそれをコーディングしようとしていますが、500K +世代では重複しています。 – user3789802

答えて

1

これはwhileループとPythonのrandomstringライブラリを使用すると簡単に実現できます。

コード:

import random 
import string 

def create(): 
    _string, counter = "", 0 
    while counter < 12: 
     choice = random.choice(string.ascii_letters + string.digits) 
     if choice not in _string: 
      _string += choice 
      counter += 1 
     else: 
      pass 
    return _string 

print(create()) 

出力:

YWdTocQs0R4X 

それはやっているもの:

  1. 変数を作成_stringcounter
  2. 条件counter < 12が偽になった後壊れるwhileループを開始する。(私は後で説明しますことをここforループ上whileループを使用する理由があります)
  3. /乱数を見つけるために、Pythonのランダムライブラリを使用します文字(大文字と小文字)。
  4. 選択肢が既に文字列内にあるかどうかを確認し、選択肢が文字列内にすでに存在するかどうかを確認します。そうでない場合は、選択肢が文字列に追加されます。しかし、それであれば、何も起こりませんし、ループは、私がforループオーバーwhileループを使用する理由
  5. (何度も始まる文字列を返します

注:。!あなたはWITHIN重複して[OK]をしている場合文字列このワンライナーがはるかに効率的に動作します。

print(''.join(random.choice(string.letters + string.digits) for _ in range(12))) 
+0

大文字のみです。 文字列の例は、大文字と小文字のアルファベットと数字で構成されています。 – user3789802

+1

@ user3789802修正済み! – Signal

+0

私はそれを得て、ありがとう。 – user3789802

関連する問題