01 / 07
毎回ちがう値がほしい
サイコロ、くじ引き、カードを配る順番。実行するたびに結果が変わってほしい処理があるね。
それを作るのが random(ランダム)モジュールだよ。下のコードは1から6までの整数をひとつ選ぶ。
import randomprint(random.randint(1, 6))これを何度も実行すると、3 が出たり 6 が出たりする。出るたびに変わるので、ここに結果を載せることができないんだ。
モジュールと標準ライブラリ
INPUT · スライド
01 / 07
サイコロ、くじ引き、カードを配る順番。実行するたびに結果が変わってほしい処理があるね。
それを作るのが random(ランダム)モジュールだよ。下のコードは1から6までの整数をひとつ選ぶ。
import randomprint(random.randint(1, 6))これを何度も実行すると、3 が出たり 6 が出たりする。出るたびに変わるので、ここに結果を載せることができないんだ。
02 / 07
ところがこの教材では、答え合わせのために出力が毎回同じである必要がある。
そこで使うのが random.seed。「たまたま」のもとになる種(たね)を決めてしまう書き方だよ。同じ種からは必ず同じ並びが出る。
これは結果を揃えたいときだけの書き方。本物のくじやゲームでは書かないので、そこだけ覚えておいてね。
import randomrandom.seed(0)print(random.randint(1, 6))実行結果
4
03 / 07
random.randint(a, b) は a 以上 b 以下の整数をひとつ返すよ。
気をつけたいのは、b も含まれること。range(1, 6) は 5 までだったけれど、random.randint(1, 6) は 6 も出る。サイコロを作るならこちらだね。
import randomrandom.seed(0)for i in range(3): print(random.randint(1, 6))実行結果
4 4 1
04 / 07
リストの中からひとつ選ぶなら random.choice。くじ引きや「今日のおすすめ」を作るときの定番だよ。
渡すのはリストそのもの。中身が何個でも構わない。
import randomrandom.seed(0)kudamonos = ["りんご", "みかん", "ぶどう"]print(random.choice(kudamonos))実行結果
みかん
05 / 07
random.shuffle は並び順をまぜる道具。トランプを切るイメージだね。
ここに落とし穴がひとつ。shuffle は元のリストそのものを書きかえて、何も返さない。だから iros = random.shuffle(iros) と書くと、iros に None が入ってしまうよ。
import randomrandom.seed(0)iros = ["あか", "あお", "きいろ"]random.shuffle(iros)print(iros)実行結果
['あか', 'きいろ', 'あお']
06 / 07
カッコに何も渡さない random.random() は、0 以上 1 未満の小数を返すよ。
一見なんに使うのか分からないけれど、確率を書くのに便利。random.random() < 0.3 と書けば「3割の確率で」という条件になるんだ。
import randomrandom.seed(0)print(random.random())実行結果
0.8444218515250481
07 / 07
「でたらめな数を作る」のは、実はとても難しい問題だよ。決まった手順どおりに動く機械に、決まっていない数を出させるわけだからね。
その難しいところを、Pythonは最初から用意してくれている。やりたいことは、たいてい誰かがもう作っている。くじ引きの仕組みを一から考える前に、まず random を思い出そう。