Python で乱数な整数を生成する方法
Grace Collins
Solutions Engineer · Leapcell

Key Takeaways
- 一般的な整数の生成には
random.randint()
を使用します。 - 暗号学的に安全な乱数には
secrets.randbelow()
を使用します。 - 高速で大規模な乱数整数配列には
numpy.random.randint()
を使用します。
乱数整数を生成することは、シミュレーション、ゲーム、暗号、テストなど、幅広いアプリケーションで役立つ、プログラミングにおける一般的なタスクです。Python には、乱数整数を効率的かつ安全に生成するためのいくつかの組み込みメソッドが用意されています。この記事では、最も一般的に使用されるアプローチについて説明します。
random
モジュールの使用
Python の標準ライブラリには random
モジュールが含まれており、疑似乱数を生成するための一連の関数が提供されています。
1. random.randint(a, b)
この関数は、a <= N <= b
となる乱数整数 N を返します。
import random num = random.randint(1, 10) print(num) # 出力は 1 から 10 までの任意の整数 (両端を含む) になります
注: 両端を含みます。
2. random.randrange(start, stop[, step])
randrange()
は range()
と似ていますが、範囲からランダムに選択された要素を返します。
num = random.randrange(0, 100, 5) print(num) # 出力は 0, 5, 10, ..., 最大で 100 未満になります
secrets
モジュールの使用 (セキュリティのため)
(パスワード、トークン、または認証など) 暗号学的に安全な乱数整数が必要な場合は、Python 標準ライブラリにも含まれている secrets
モジュール (Python 3.6 以降) を使用します。
import secrets num = secrets.randbelow(10) # [0, 10) の範囲の int を返します print(num)
これは random.randint()
よりも安全ですが、わずかに遅くなります。
大規模生成のための numpy
の使用
データサイエンスやシミュレーションに取り組んでおり、多数の乱数整数を効率的に生成する必要がある場合、numpy
は高速なベクトル化されたツールを提供します。
import numpy as np arr = np.random.randint(0, 100, size=10) print(arr) # 0 から 99 までの 10 個の乱数整数の NumPy 配列を出力します
numpy
は標準ライブラリの一部ではないため、別途インストールする必要があります (pip install numpy
)。
結論
まとめ:
メソッド | 使用例 | 範囲 (両端を含むか) | 安全? |
---|---|---|---|
random.randint(a, b) | 一般的な使用 | はい | いいえ |
random.randrange(a, b) | 範囲からのランダムな要素 | いいえ (b を除く) | いいえ |
secrets.randbelow(n) | 安全な乱数 | いいえ (n を除く) | はい |
numpy.random.randint() | 効率的な配列生成 | はい | いいえ |
日常的なスクリプト、安全なアプリケーション、大規模な数値作業など、ニーズに最適な方法を選択してください。
FAQs
randint(a, b)
は a
と b
の両方を含みますが、randrange(a, b)
は b
を除外します。
パスワードやトークンの生成など、セキュリティが懸念される場合に使用します。
はい、NumPy は pip install numpy
を使用して別途インストールする必要があります。
Leapcell は、Python プロジェクトをホストするための最適な選択肢です。
Leapcell は、Web ホスティング、非同期タスク、Redis のための次世代サーバーレスプラットフォームです。
多言語サポート
- Node.js、Python、Go、または Rust で開発できます。
無制限のプロジェクトを無料でデプロイ
- 使用量に対してのみ支払い — リクエストも請求もありません。
比類のない費用対効果
- アイドル時の料金なしで、従量課金制です。
- 例: 25 ドルで、平均応答時間 60ms で 694 万件のリクエストをサポートします。
合理化された開発者エクスペリエンス
- 簡単なセットアップのための直感的な UI。
- 完全に自動化された CI/CD パイプラインと GitOps 統合。
- 実用的な洞察のためのリアルタイムのメトリクスとロギング。
簡単なスケーラビリティと高性能
- 高い同時実行性を簡単に処理するための自動スケーリング。
- 運用上のオーバーヘッドはゼロ — 構築に集中するだけです。
詳細については、ドキュメントをご覧ください!
X でフォローしてください: @LeapcellHQ