Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
random.random() / random.randint() / random.choice()
『random』モジュールが提供する乱数生成・ランダム選択・シャッフルの関数です。ゲーム・テストデータ生成・サンプリングなどに使用します。
構文
import random # 0.0以上1.0未満の浮動小数点数を返します。 random.random() # 指定した範囲のランダムな整数を返します。 random.randint(a, b) # 指定した範囲のランダムな浮動小数点数を返します。 random.uniform(a, b) # シーケンスからランダムに1つ選んで返します。 random.choice(シーケンス) # シーケンスからk個の要素を重複なしで選んでリストを返します。 random.sample(シーケンス, k) # シーケンスをランダムに並び替えます(インプレース)。 random.shuffle(リスト)
関数一覧
| 関数 | 概要 |
|---|---|
| random.random() | 0.0以上1.0未満の浮動小数点数をランダムに返します。 |
| random.randint(a, b) | a以上b以下のランダムな整数を返します(両端を含みます)。 |
| random.uniform(a, b) | a以上b以下のランダムな浮動小数点数を返します。 |
| random.choice(シーケンス) | 空でないシーケンス(リスト・タプル・文字列など)からランダムに1要素を選んで返します。 |
| random.sample(シーケンス, k) | シーケンスからk個の要素を重複なしでランダムに選び、新しいリストで返します。元のシーケンスは変更されません。 |
| random.shuffle(リスト) | リストの要素をランダムに並び替えます(インプレース)。戻り値は『None』です。 |
| random.seed(値) | 乱数生成のシードを設定します。同じシードを指定すると同じ乱数列が再現できます。 |
サンプルコード
import random
# random() で0〜1の乱数を生成します。
print(random.random()) # 例: 『0.37444887175646646』と出力されます。
# randint() でサイコロをシミュレートします。
dice = random.randint(1, 6)
print(f'サイコロ: {dice}') # 1〜6のランダムな値が出力されます。
# uniform() で連続した範囲の乱数を生成します。
temp = random.uniform(20.0, 30.0)
print(f'気温: {temp:.1f}℃') # 20.0〜30.0の乱数が出力されます。
# choice() でリストからランダムに選びます。
fruits = ['apple', 'banana', 'cherry', 'date']
picked = random.choice(fruits)
print(f'選ばれた果物: {picked}')
# choice() で文字列からランダムに1文字選びます。
letters = 'abcdefghijklmnopqrstuvwxyz'
print(random.choice(letters))
# sample() で重複なしに複数選びます。
winners = random.sample(['田中', '佐藤', '鈴木', '山田', '高橋'], k=3)
print(f'当選者: {winners}') # 3名がランダムに選ばれます。
# shuffle() でリストをシャッフルします。
cards = list(range(1, 14))
random.shuffle(cards)
print(cards) # ランダムに並び替えられたリストが出力されます。
# seed() で再現可能な乱数列を生成します(テスト用途など)。
random.seed(42)
print(random.randint(1, 100)) # シードが同じなら常に同じ値が出力されます。
概要
Pythonの『random』モジュールはメルセンヌ・ツイスタアルゴリズムを使用しており、高品質な擬似乱数を生成します。ゲーム・シミュレーション・テストデータ生成など多くの用途に使えます。
『random.shuffle()』はリストをインプレース(元のリスト自体を変更)で並び替えるため戻り値は『None』です。元のリストを変更したくない場合は事前にコピーしてからシャッフルしてください。
『random』モジュールはセキュリティ用途には使用しないでください。パスワードやトークンの生成など、暗号的に安全な乱数が必要な場合は『secrets』モジュールの『secrets.token_hex()』や『secrets.choice()』を使ってください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。