Pythonで範囲指定で乱数を得る4つの方法【random】

718, 2023-08-10

目次

Pythonで範囲指定で乱数を得る4つの方法

Pythonのrandomモジュールを使って範囲指定で乱数を得るには

  • random.randrange()

  • random.randint()

  • random.uniform()

  • random.triangular()

の4つの関数が使えます。
この記事ではこれらの関数の使い方を解説します。

random.randrange()

randrange()は以下のインターフェースを持ちます。

random.randrange(stop)
random.randrange(start, stop[, step])

インターフェースは2つあり、引数の個数で使い分けます。
stopだけを指定した場合は0からstopまでの範囲で乱数を得ます。

startstopを指定した場合はstartstopの範囲で乱数を得ます。
stepを指定した場合はstep刻みの乱数になります。

import random

print(random.randrange(10))  # 5

print(random.randrange(0, 10))  # 7

print(random.randrange(0, 10, 2))  # 8

random.randint()

randint()は以下のインターフェースを持ちます。

random.randint(a, b)

この関数はa <= N <= bの範囲で乱数Nを得ます。
たとえば0から10の範囲を指定した場合はその範囲の乱数を得ます。

import random

for _ in range(10):
    print(random.randint(0, 10))

# 2
# 10
# 3
# 7
# 1
# 2
# 9
# 3
# 8
# 1

random.uniform()

uniformは浮動小数点数の乱数を得ます。
インターフェースは以下になります。

random.uniform(a, b)

a <= bであればa <= N <= bb < aであればb <= N <= aの乱数を得ます。

import random

for _ in range(10):
    print(random.uniform(0, 10))

# 4.274287966939716
# 7.605267312473618
# 9.32622951783877
# 8.777803395478701
# 6.08237492473099
# 6.379581149681539
# 5.174560518835763
# 1.933791552816786
# 7.314910237323594
# 8.464211820823946

for _ in range(10):
    print(random.uniform(10, 0))

# 6.233158304881506
# 9.137231552467282
# 9.443756155109728
# 0.014941848399045554
# 2.190029063095304
# 1.3980222602360453
# 4.958503198047626
# 0.08372815781262766
# 3.8257608711346602
# 1.1040841059914008

random.triangular()

triangular()は以下のインターフェースを持ちます。

random.triangular(low, high, mode)

low <= N <= highの範囲で最頻値modeを持つような乱数Nを返します。

import random

for _ in range(10):
    print(random.triangular(0, 10, 5))

# 3.6495528893649647
# 7.951678192451139
# 5.281139960101321
# 8.072675112575965
# 6.918927877667826
# 7.662022025617716
# 5.692626499606273
# 4.506161947124113
# 5.86207542380047
# 6.460058584929693


この記事のアンケートを送信する