Pythonは中心となる乱数生成器としてメルセンヌツイスタを使用します。メルセンヌツイスタは53ビット精度の浮動小数点を生成し、周期は $2^{19937}-1$ です。本体はCで実装されており、高速でスレッドセーフです。
しかし、メルセンヌツイスタは完全に決定論的であるため、全ての目的に合致しているわけではなく、暗号化の目的には全く向いていません。このため、乱数を生成する際には、目的に応じて適切な乱数生成器を選択することが重要です。
また、Pythonのrandom
モジュールはSystemRandom
クラスも提供しています。このクラスはOSが提供している乱数発生源を利用して乱数を生成するシステム関数os.urandom()
を使用します。
しかし、このモジュールの擬似乱数生成器をセキュリティ目的に使用してはいけません。セキュリティや暗号学的な用途についてはsecrets
モジュールを参照してください。
以上の情報を踏まえて、Pythonで乱数を扱う際には、その精度と用途を十分に理解した上で、適切な乱数生成器を選択することが重要であると言えます。