スライドショースライドショー

【Python入門】randomモジュールの使い方まとめ

今回はPythonで乱数を扱うrandomモジュールについて説明したいと思います。

この記事では、

  • randomモジュールの使い方
  • randomモジュールの応用的な使い方
  • randomモジュールで文字列を生成する方法

などといった基本的な内容から、より実践的な内容に関してもやさしく解説していきたいと思います。

※ この記事のコードはPython 3.7で動作確認しました。

randomモジュールとは

randomモジュールは、Pythonでランダムな処理が必要な場合に活躍する標準モジュールです。ランダムな要素や乱数を使う操作などはとても便利なので、覚えておいて損はありません。ちなみに乱数とは、サイコロを投げたときのようにどのような数字が出るかわからない数字のことです。

サイコロでは1〜6の範囲ですが、randomモジュールではその範囲を自由に決めることができます。

randomモジュールの使い方

機能について見ていく前に、まずはrandomモジュールのimportを忘れないようにしましょう。

import random

importについて詳しく知りたい方は、こちらの記事をご覧ください。

はじめてのPython!パッケージをimportする方法をやさしく解説!
更新日 : 2019年5月2日

1未満のfloat型の乱数を取得(random.random)

これは、randomモジュールの中でも一番基本的な関数です。random.random関数は、0.0から1.0の範囲のfloat型の値を返します。

num = random.random()
print(num)

実行結果

0.08114641703637393

またこれ以降の結果は、実行するたびにランダムな値に変わっていきます。

指定した範囲の乱数を取得(random.uniform(a,b))

先ほどご紹介したrandom.random関数は0.0<=x<1.0の間のランダムな値xをfloat型として返す関数でした。任意の範囲でランダムに値を返してほしい場合は、random.uniform関数を使用します。

num = random.uniform(2.0,5.0)
print(num)

実行結果

3.8989018807071822

第一引数と第二引数の範囲内で、float型の値を返します。

今回の場合、2.0<=x<=5.0の範囲のランダムな値xをfloat型として生成し出力しました。

指定した範囲の整数の乱数を取得(random.randint(a,b))

random.randint関数はrandom.uniform関数と同じく、指定した範囲内でランダムに値を返します。

random.uniform関数との違いは、random.randint関数はfloat型ではなくint型の値を返す所です。

num = random.randint(1,10)
print(num)

実行結果

9

引数として渡す値は、10.0や4.0など、整数に変換できる値を渡しましょう。

配列の中身をランダムに取得(random.choice(a))

random.choice関数は、リストや文字列などといった複数の要素を含むシーケンス型オブジェクトを引数に受け取ります。

そして、それらからランダムに一つ要素を返します。

mylist = ["apple", "banana", "melon", "strawberry", "peach", "lemon"]
print(random.choice(mylist))

実行結果

melon

こちらのコードでは、6つの要素を持つリストであるmylistからランダムにひとつ、要素を取り出してみました。

このrandom.choice関数の引数として指定したオブジェクトが空であった場合、エラーが発生するので注意しましょう。

配列の中身をシャッフルする方法(random.shuffle(a))

random.shuffle関数も、random.choice関数と同じように引数としてシーケンス型オブジェクトを受け取ります。random.shuffle関数は、受け取ったシーケンス型オブジェクトの要素をランダムにシャッフルします。

戻り値は無く、引数に指定したオブジェクトそのものに変更を加えます。

mylist = ["apple", "banana", "melon", "strawberry", "peach", "lemon"]
random.shuffle(mylist)
print(mylist)

実行結果

['apple', 'lemon', 'peach', 'banana', 'strawberry', 'melon']

ご覧いただけるように、random.shuffle関数の適用後、mylistの要素の順番が変わっていますね。

randomモジュールの発展的な使い方

数字をランダムに生成したり、シーケンス型オブジェクトの要素をランダムに取り出したり、などといった事は前の章でご紹介しましたね。

今回は、文字列をランダムに生成する方法をご紹介します。その為にはまず、文字列の操作に便利なstringモジュールをimportする必要があります。

import string

randomモジュールとstringモジュールの両方を使用して文字列をランダムに生成してみましょう。今回は、stringモジュールのstring.ascii_lettersとstring.digitsを使います。

string.ascii_lettersはアルファベットの大文字と小文字のすべてを含む文字列です。string.digitsは、0から9までの文字列です。

これら二つを「+」演算子で組み合わせると、このような文字列を作成することが出来ます。

chars = string.ascii_letters + string.digits
print(chars)

実行結果

'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'

そしてrandom.choice関数を使ってcharsからランダムにひとつ要素を取り出してみましょう。

print(random.choice(chars))

実行結果

'T'

random.choice関数が一回しか実行されていないため、ひとつの要素だけが取り出されました。

しかし、n文字のランダムな文字列を生成する為にはn回、random.choice関数を実行する必要があります。そして、取り出されたn個の要素を1つの文字列として組み合わせてみましょう。

n = 5
s = ''
mystr = s.join([random.choice(chars) for i in range(n)])

実行結果

qoR4v

こちらのコードでは、5文字のランダムな文字列を作成しました。

joinメソッドは、引数として受け取ったシーケンス型オブジェクトを、joinを呼び出した文字列と足し合わせてつなげて行きます。その文字列は、hoge.joinのhogeの部分ですね。今回の場合、文字列sがその役割を果たしています。

joinメソッドは、シーケンス型オブジェクトを引数に受け取ります。この場合、リスト内包表記を使用しました。

リスト内包表記については、こちらの記事を参照してください。

【Python入門】listの使い方とメソッドまとめ
更新日 : 2019年7月30日

このままPythonを学び続けて大丈夫?

なぜPythonを学ぶのか?

あなたがPythonを学ぶ理由は何でしょうか?

  • Pythonが人気だからとりあえず学んでいる
  • AIや機械学習の分野に興味があるから

Pythonは初心者向けの言語と言われています。その理由としてシンプルでわかりやすい構文や、実用的なライブラリが豊富なことが挙げられ、実際に学びやすい言語です。

しかし、もしあなたが機械学習に興味があって、とくに知識も無いまま学習を進めると、挫折する可能性が高いと言えます。

機械学習の分野はプログラミング以外にも、専門的な知識や数学の知識も必要になります。ただなんとなく学習していると早い段階でつまづきやすく、そのまま挫折してしまうなんてことも…。

そのため、挫折しないためには、

  • 最適な学習環境を用意する
  • 必要なライブラリ・ツールを導入する
  • わからないことを質問できるメンターを見つける

などが必要になります。

効率よく学びたいなら、無料体験レッスンがおすすめ

このままPythonを学び続けていいのかな…
まだまだ知りたいことがたくさんある!
もっと詳しくPythonについて知りたい!

といった悩みや願望を持っている方は、弊社「侍エンジニア塾」をご利用下さい。

侍エンジニア塾では、

  • 現役エンジニアによるマンツーマンレッスン
  • キャリアアドバイザーによる転職・就職支援
  • 業界屈指のフリーランス・起業サポート

を受けることができます。

業界屈指のコンサルタントから、効率的な学習方法や仕事獲得術、今後のキャリアまでさまざまな疑問を相談してみませんか?遠方の方でもオンラインで受講できます!お気軽に受講下さい。

侍エンジニア塾
無料体験レッスンを受ける

まとめ

今回は、randomモジュールの基本的な使い方を解説しました。

random.random関数はよく使われる一般的な関数ですのでぜひ覚えておきましょう。また、発展的な内容にもチャレンジして、より実用的なrandomモジュールの使い方についても学習しました。

では、みなさんもこの記事を通してrandomモジュールについての知識を増やしていってくださいね。

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

Kotono

Kotono

イタリア在住15年目の22歳です。イタリアの大学で情報科学&応用数学を学んでいます。主にJavaScriptやPythonについての記事を書いたりしています。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説