randomモジュールを使ってランダムな値の生成をしてみる

プログラミングする上で乱数を生成する必要がある場合、randomモジュールを使用します。randomモジュールには、様々な関数を使うことでいろいろな種類の乱数を生成することができます。

randint()関数

randint()関数は、整数の乱数を生成するための関数です。

randint(x,y)
#x以上、y以下のランダムな整数を返す。

実際にrandint()関数を使ってみます。

>>> import random
>>> random.randint(1,10)
9
>>> random.randint(1,10)
2
>>> random.randint(1,10)
7
>>> random.randint(1,10)
8
>>> random.randint(1,10)
10
>>> random.randint(1,10)
3
>>> random.randint(1,10)
3

上記例は1以上、10以下で指定したため、1~10の中からランダムな整数が返されます。

randrange()関数

randrange()関数も、randint()関数と同様に、指定した範囲内の整数をランダムに返すための関数です。違いは最後の数値を含めるかどうかになります。

randrange(x,y)
#x以上、y未満のランダムな整数を返す。

実際にrandrange()関数を使うと以下のような結果になります。

>>> random.randrange(1,3)
1
>>> random.randrange(1,3)
2
>>> random.randrange(1,3)
2
>>> random.randrange(1,3)
2
>>> random.randrange(1,3)
1
>>> random.randrange(1,3)
1
>>> random.randrange(1,3)
2
>>> random.randrange(1,3)
1
>>> random.randrange(1,3)
1

1以上、3未満の整数値を返します。

randrange()関数は、オプションとしてステップを指定することも可能です。

randrange(x,y,z)
#x以上、y未満の間で、z間隔でランダムな整数を返す。

例えば、0以上100未満の間で、5間隔でランダムな整数を返す場合は以下のように指定します。

>>> random.randrange(0,100,5)
5
>>> random.randrange(0,100,5)
35
>>> random.randrange(0,100,5)
55
>>> random.randrange(0,100,5)
20
>>> random.randrange(0,100,5)
85

random()関数

random()関数は、0.0~1.0の間の浮動小数点をランダムに返します。

>>> random.random()
0.45165380725031645
>>> random.random()
0.9110816381552398
>>> random.random()
0.2926203383692433
>>> random.random()
0.7035357829937713

指定したリストの中身をランダムに返す

randomモジュールは数値だけではなく、文字列も同様に扱うことが可能です。

以下のように、「大吉」「中吉」「吉」「凶」「大凶」という要素のリスト作成して、randomモジュールを使って要素をランダムに返すことでおみくじプログラムを作成することも可能です。

%vim omikuji.py

#ランダムモジュールのインポート
import random

#おみくじ用リスト生成
omikuji = ["大吉","中吉","吉","凶","大凶"]

#結果をランダムに表示
print(omikuji[random.randint(0,4)])

最後のprint(omikuji[random.randint(0,4)])は、randint()関数を使って、omikujiリストのインデックス値の範囲(0~4)を指定して、ランダムに結果を返すようにしています。

% python omikuji.py
中吉
% python omikuji.py
大吉
% python omikuji.py
吉

上記実行結果のように、このプログラムを実行しても問題なく動作しますが、リストの要素が増減するたびに、randiint(0,4)の値を変更しなければいけません。そこでlen()関数を使ってリストの要素数を取得するように変更してみます。

%vim omikuji.py

#ランダムモジュールのインポート
import random

#おみくじ用リスト生成
omikuji = ["大吉","中吉","吉","凶","大凶"]

#結果をランダムに表示
print(omikuji[random.randrange(0,len(omikuji))])

len(omikuji)を指定することで、omikujiリストの要素数を取得し、randrange()関数を使って要素数よりも小さい整数の乱数を返すようにしています。

おすすめ記事

関連記事

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス:

検索

特集

初心者のためのciscoルータの管理

目指せPMP

▼ ネットワークエンジニアにおすすめのサイトはこちら ▼


著書

図解入門 よくわかる最新ネットワーク技術の基本と仕組み

初心者のためのCiscoルータ運用ガイド: 最速でCiscoルータを理解するための解説書

目指せPMP PMBOK第5版対応: 最速でPMPに合格するための解説書

見てわかるTCP/IP

おすすめ記事

カテゴリ

ブログ最新記事