Pythonで指定した長さのランダム文字列を生成する方法
この記事では、Pythonで指定した長さのランダムな文字列を生成する方法を解説します。ランダムなパスワードの作成や、ランダム性が求められるさまざまなプログラムで活用できる基本的なテクニックです。
random.choices() を使う方法
randomモジュールのchoices()関数は、指定した文字セットからランダムに文字を選び出します。string.ascii_letters(英大文字・小文字)とstring.digits(数字)を組み合わせた文字セットから選択し、join()メソッドで連結することで、目的の長さの文字列を作成できます。
サンプルコード
import string
import random
# 必要な文字列の長さ
N = 5
# random.choices() を使って生成
res = ''.join(random.choices(string.ascii_letters + string.digits, k=N))
# 結果を出力
print("Random string : ", res)実行結果
Random string : nw1r8
※ 実行するたびに異なる文字列が出力されます。
secrets モジュールを使う方法
secretsモジュールにもchoice()メソッドが用意されており、同様にランダムな文字列を生成できます。この方法の特徴は、string.ascii_lowercase(小文字のみ)やstring.digits(数字)など、stringモジュールの定数を自由に組み合わせて、使用する文字の種類を柔軟に指定できる点です。また、secretsモジュールは暗号学的に安全な乱数を提供するため、パスワード生成などのセキュリティ関連の用途にはこちらが推奨されます。
サンプルコード
import string
import secrets
# 必要な文字列の長さ
N = 5
# secrets.choice() を使って生成
res = ''.join(secrets.choice(string.ascii_lowercase + string.digits)
for i in range(N))
# 結果を出力
print("Random string : ", res)実行結果
Random string : p4ylm
まとめ
手軽にランダム文字列を作りたい場合はrandom.choices()、セキュリティ強度が求められる場面(トークンやパスワードの生成など)ではsecretsモジュールを使うのがベストプラクティスです。用途に応じて使い分けましょう。
-
Pythonでランダムなビット列を生成する方法をわかりやすく解説
Pythonでは、標準ライブラリの random モジュールに含まれる getrandbits() 関数を使うことで、指定したビット数のランダムなビット列(整数値)を簡単に生成できます。この関数は引数としてビット数を受け取り、その範囲内のランダムな整数を返します。基本的な使い方以下は、128ビットのランダムな値を生成し、16進数形式で表示する例です。import random hash = random.getrandbits(128) print(hex(hash))実行結果このコードを実行すると、実行するたびに異なる128ビットのランダムな16進数文字列が出力されます。0xa3fa6d9
-
Python文字列の最大長はどれくらい?メモリと環境による上限を解説
Python文字列の最大長は環境によって決まるPythonにおける文字列の最大長は、理論上の上限よりも、実際に利用できるメモリ容量とPythonの実行環境(32ビットか64ビットか)によって決まります。言語仕様上、文字列の長さは Py_ssize_t 型で管理されており、64ビット環境では最大約9.2×1018(263-1)文字まで扱えることになっています。しかし、現実的にはこの上限に達する前にメモリが足りなくなります。64ビット環境の場合64ビット版のPythonを搭載し、64GBのメモリを備えたマシンであれば、約63GB程度の巨大な文字列でも十分に扱うことが可能です。さらにメモリを増設すれ