random.random() / random.randint() / random.choice()
| 対応: | Python 2(2000) |
|---|
『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(値) | 乱数生成のシードを設定します。同じシードを指定すると同じ乱数列が再現できます。 |
サンプルコード
sample_random_choice.py
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() でリストからランダムに選びます。
enforcers = ['狡噛慎也', '常守朱', '宜野座伸元', '征陸智己']
picked = random.choice(enforcers)
print(f'選ばれた執行官: {picked}')
# choice() で文字列からランダムに1文字選びます。
letters = 'abcdefghijklmnopqrstuvwxyz'
print(random.choice(letters))
# sample() で重複なしに複数選びます。
winners = random.sample(['狡噛慎也', '常守朱', '宜野座伸元', '征陸智己', '唐之杜志恩'], k=3)
print(f'当選者: {winners}') # 3名がランダムに選ばれます。
# choice() でBGMをランダムに選びます。
psycho_songs = ['abnormalize', 'Enigmatic Feeling', 'Out of Control', '名前のない怪物', 'アレキシサイミア']
print(f'今夜のBGM: {random.choice(psycho_songs)}')
# shuffle() でリストをシャッフルします。
cards = list(range(1, 14))
random.shuffle(cards)
print(cards) # ランダムに並び替えられたリストが出力されます。
# seed() で再現可能な乱数列を生成します(テスト用途など)。
random.seed(42)
print(random.randint(1, 100)) # シードが同じなら常に同じ値が出力されます。
python3 random_choice.py 0.8444218515250481 サイコロ: 1 気温: 27.0℃ 選ばれた執行官: 宜野座伸元 l 当選者: ['狡噛慎也', '常守朱', '唐之杜志恩'] 今夜のBGM: abnormalize [10, 4, 5, 7, 3, 9, 6, 8, 2, 11, 1, 12, 13] 82
概要
Pythonの『random』モジュールはメルセンヌ・ツイスタアルゴリズムを使用しており、高品質な擬似乱数を生成します。ゲーム・シミュレーション・テストデータ生成など多くの用途に使えます。
『random.shuffle()』はリストをインプレース(元のリスト自体を変更)で並び替えるため戻り値は『None』です。元のリストを変更したくない場合は事前にコピーしてからシャッフルしてください。
『random』モジュールはセキュリティ用途には使用しないでください。パスワードやトークンの生成など、暗号的に安全な乱数が必要な場合は『secrets』モジュールの『secrets.token_hex()』や『secrets.choice()』を使ってください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。