Python

Pythonで特定の範囲の整数の乱数を取得する

どの言語を使っていても遭遇するのが乱数の生成。

ビジネスロジック以外でも、シナリオテストや負荷試験のロジックを書く機会が増えてから使う場面も増えました。

今回は Python で特定の範囲の整数の乱数を取得する方法を紹介します。

負荷テストは以前紹介した Locust を想定しているので、興味があればこちらの記事もご覧ください。

負荷テストツールLocust(イナゴ 175)のインストールと実行先日、負荷テストの話題になって聞き慣れないツールの名前が出たので調べてみました。 負荷テストのツールと言えば、簡易的なもので「Apac...

randomモジュール

Python で乱数を扱うには、標準で用意されている random モジュールを利用します。

この random モジュールには便利なメソッドがたくさん用意されています。

今回は、この中から randrange() を使って目的を果たしたいと思います。

randrange()

randrange() は引数の数によって使い方が異なります。

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

特定の範囲からランダムな値を取得したい場合は、開始と終了の値を引数として渡せば良さそうですね。

ここで気をつけておきたいのは、終了の値は含まれないということです。

これは range() と同じイメージで考えておけば問題ありません。

では早速、randrange() を使ってみます。

これを実行すると以下のような結果が出力されます。
(1から9の中からランダムに値を取得します)

10 までの数値が欲しい場合は random.randrange(1, 11) とすれば問題ありません。

ちなみに、引数が 1 つの randrange() を使う場合、引数は公式リファレンスの通り stop を想定しているので「0」から「引数 – 1」の中から乱数が取得されます。

上記の場合は、以下のように 0 から 9 の中からランダムな数値が取得される結果となります。

乱数を生成して配列のインデックス指定をする際には最適ですが、1 から 10 の値が欲しい場合は引数を randrange(1, 11) のように変えるか、乱数生成後にプラス 1 するといいでしょう。

乱数を特定の桁数でゼロ埋めする

乱数の結果を、特定の桁数で前ゼロで埋めた形(ゼロパディング)にしたい場合も多いと思います。

例えば、こんなやつですね。

12345
01234
00001

Python でこれを実現するには format() を利用します。

先ほどのように実際に実行してみます。

PHPの場合

PHP だと以下のように書いたのと同じですね。

Kotlinの場合

Kotlin だと以下のように書いたのと同じですね。

Kotlin の format() については過去にまとめたので興味があれば以下もご覧ください。

【Kotlin入門】フォーマットされた文字列に動的な値を差し込むKotlin に限った話ではないですが、どのプログラム言語を使っていても文字列の中の一部分を動的に変更したい場面に遭遇します。 例えば...

JavaScriptの場合

JavaScript 版を調べる機会があったので下記にまとめてみました。

JavaScriptで特定の範囲の整数の乱数を取得する前回、Python で乱数を取得して前ゼロ(ゼロパディング)する方法を紹介しました。 https://itneko.com/pytho...