Pythonで乱数を作る2つの方法!(randrange, randint)

Python Python

Pythonで乱数を作る方法について書いています。
Pythonで乱数を作りたいときにはrandomモジュールを使うと良いです。
randomモジュールのrandrange関数とrandint関数を使うことで、指定した範囲で整数値の乱数を作れます。

載せているコードはPythonのバージョン3.11.0で確認しました。
公式ドキュメントではこちらに詳細が書いています。

randrange関数を使う

randomモジュールのrandrange関数を使って、乱数を作ってみます。
例えば、下記のように使うことができます。

import random

result = random.randrange(50)
print(result) # 41

最初にrandomモジュールをインポートしています。
次の処理で、randomモジュールのrandrange関数を使っています。

randrange関数に引数として渡している値は「50」です。
これで「0」から「49」のランダムな値が取得できます。
指定した終了値の「50」は出力対象にならないので注意が必要です。

取得した結果をresult変数に受け取っています。
その後にprint関数で出力しました。
「0」から「49」の乱数が出力されることが確認できます。

開始値を指定する

randrange関数に開始値を指定して、開始値と終了値の間の数値を取得することもできます。

import random

result = random.randrange(10, 30)
print(result) # 19

先ほどと同じプログラムのrandrange関数に、渡している引数を変えました。
第1引数が開始値で、第2引数が終了値です。

これで「10」から「29」(終了値を除く)の値が取得され、result変数に格納されます。

マイナス値も指定できる

開始値と終了値にはマイナスの値を指定することができます。

import random

result = random.randrange(-20, -10)
print(result) # -12

上記ではマイナス値を引数に指定しています。
このようにマイナス値を指定して、その間の乱数を取得することもできます。

開始値が終了値を超えていたら?

開始値が終了値を超えていた場合には、エラーになるので注意が必要です。
例えば、下記のようなときです。

result = random.randrange(15, 10)

この場合には、下記のようにValueErrorが発生します。

ValueError: empty range for randrange() (15, 10, -5)

指定する値に気をつけましょう。

randint関数を使う

randomモジュールのrandint関数でも乱数が作成できます。
公式ページによると、この関数はrandrange(a, b+1)のエイリアスとのことです。

import random

result = random.randint(0, 10)
print(result) # 4

最初にrandomモジュールをインポートしています。
次の処理で、randomモジュールのrandint関数を使っています。

randint関数に渡しているのは、開始値と終了値になります。
randint関数では2つの引数が必須になります。

今回は「0」と「10」を渡しているので、「0」から「10」までの乱数が作られます。
randint関数もマイナス値を指定することが可能です。

開始値が終了値を超えていたら?

randint関数でも開始値が終了値を超えていた場合にはエラーになります。

import random

result = random.randint(30, 5)
print(result)

randrange関数と同様に、下記のようにエラーになります。
ValueError: empty range for randrange() (30, 6, -24)

randrange関数とrandint関数の違いは?

randrange関数とrandint関数の違いは下記です。

・randrange関数は終了値のみを指定できる
・randrange関数は終了値を含まない

randint関数はふたつの引数が必須ですが、randrange関数は終了値だけで使うことができました。
また、randint関数は終了値を含んだ乱数値を取得できますが、randrange関数では含みません。

終了値を含むか含まないかで選ぼう

今回はPythonで乱数を作る方法を解説しました。

終了値を含むかどうかで、どちらの関数を使うか選びましょう。
rangeint関数は2つの引数が必須なので、気をつけて使っていきましょう。

コメント

タイトルとURLをコピーしました