random --- 乱数を生成する

このモジュールは擬似乱数生成器(PRNG)を実装します。PRNG は 32 ビットの Yasmarang 形式の LCG です。最初のインポート時に、os.urandom() が使用するのと同じハードウェアソースから 32 ビットのシードを 1 つ取得し、それ以降のすべての数値はそのシードの決定論的な関数となります。

警告

出力は暗号学的に安全ではありません。このアルゴリズムは短い出力シーケンスから予測可能であり、初期シードは 32 ビットのエントロピーしか持ちません。鍵素材、セッショントークン、パスワードのソルト、その他セキュリティが重要な用途には、代わりに os.urandom() を呼び出してください。

注釈

区間には次の表記法が使用されます。

  • () は開区間の括弧で、端点を含みません。たとえば (0, 1) は 0 より大きく 1 より小さいことを意味します。集合の表記では (0, 1) = {x | 0 < x < 1} です。

  • [] は閉区間の括弧で、すべての境界点を含みます。たとえば [0, 1] は 0 以上 1 以下を意味します。集合の表記では [0, 1] = {x | 0 <= x <= 1} です。

整数用の関数

random.getrandbits(n: int) int

n ビットの乱数を持つ整数を返します(0 <= n <= 32)。

random.randint(a: int, b: int) int

範囲 [a, b] の乱数整数を返します。

random.randrange(start: int, stop: int | None = None, step: int = 1) int

最初の形式は範囲 [0, stop) の乱数整数を返します。2 番目の形式は範囲 [start, stop) の乱数整数を返します。3 番目の形式は範囲 [start, stop) の乱数整数を step 刻みで返します。たとえば randrange(1, 10, 2) を呼び出すと、1 から 9 までの奇数(両端を含む)を返します。

浮動小数点数用の関数

random.random() float

範囲 [0.0, 1.0) の乱数浮動小数点数を返します。

random.uniform(a: float, b: float) float

a <= b の場合は a <= N <= bb < a の場合は b <= N <= a となるような乱数浮動小数点数 N を返します。

その他の関数

random.seed(n: int | None = None, /) None

乱数生成器モジュールをシード n で初期化します。これは整数であるべきです。引数を渡さない場合(または None を渡した場合)、PRNG は os.urandom() が使用するのと同じポート固有のソースから再シードされます。

random.choice(sequence: Any) Any

sequence(タプル、リスト、または添字操作をサポートする任意のオブジェクト)からランダムに 1 つの項目を選択して返します。