モジュールと標準ライブラリ

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

randint は両はしを含む

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

choice でひとつ選ぶ

リストの中からひとつ選ぶなら random.choice。くじ引きや「今日のおすすめ」を作るときの定番だよ。

渡すのはリストそのもの。中身が何個でも構わない。

import randomrandom.seed(0)kudamonos = ["りんご", "みかん", "ぶどう"]print(random.choice(kudamonos))

実行結果

みかん

05 / 07

shuffle は元のリストを並べかえる

random.shuffle は並び順をまぜる道具。トランプを切るイメージだね。

ここに落とし穴がひとつ。shuffle は元のリストそのものを書きかえて、何も返さない。だから iros = random.shuffle(iros) と書くと、iros に None が入ってしまうよ。

import randomrandom.seed(0)iros = ["あか", "あお", "きいろ"]random.shuffle(iros)print(iros)

実行結果

['あか', 'きいろ', 'あお']

06 / 07

random は 0 以上 1 未満の小数

カッコに何も渡さない random.random() は、0 以上 1 未満の小数を返すよ。

一見なんに使うのか分からないけれど、確率を書くのに便利。random.random() < 0.3 と書けば「3割の確率で」という条件になるんだ。

import randomrandom.seed(0)print(random.random())

実行結果

0.8444218515250481

07 / 07

でたらめを作るのは難しい

「でたらめな数を作る」のは、実はとても難しい問題だよ。決まった手順どおりに動く機械に、決まっていない数を出させるわけだからね。

その難しいところを、Pythonは最初から用意してくれている。やりたいことは、たいてい誰かがもう作っている。くじ引きの仕組みを一から考える前に、まず random を思い出そう。