データが一律に分布している乱数ではなく、平均値付近のデータ頻度が高く、そこから離れるほどデータ頻度が低くなっていく乱数を生成したい場合もあるだろう。このような場合は関数NORM.INVを使うと、中心部が山なりの「正規分布の乱数」を作成できる。ただし、そのためには「標準偏差」について理解を深めておく必要がある。

生成される乱数のヒストグラム

今回は「テストの点数」をランダムに生成する場合について考えていこう。「テストの点数」は、平均値付近のデータが多く、そこから離れる(高得点または低得点)になるほどデータの頻度が低くなっていくのが一般的だ。このような「正規分布の乱数」を作成したいときは関数NORM.INVを活用するとよい。

  • NORM.INVの使い方と標準偏差

第61回第62回の連載でも紹介したように、Excelの使い方を学習するための「ダミーのデータ表」を作成するときなどに活用できるだろう。

まずは、普通に乱数を生成した例から紹介していこう。以下の図は、関数RANDBETWEENを使って「30~99の整数」をランダムに生成した例だ。

  • 関数RANDBETWEENで30~99の乱数を生成

この関数を縦横にオートフィルでコピーすると、好きな数だけ「30~99の整数」をランダムに生成できる。

  • オートフィルで関数RANDBETWEENをコピーした様子

なお、第61回の連載でも紹介したように、RANDやRANDBETWEENといった関数は「何らかの操作」を行うたびに「新しい乱数」を生成しなおす仕様になっている。いちど生成した乱数を固定しておきたい場合は、コピー&ペーストの操作により「値」だけを表に貼り付けておく必要がある。

  • 生成した乱数をコピー

  • 「値」として貼り付け

続いては、この乱数が「どのようなデータ分布になっているか?」について調べていこう。データ分布を視覚的に確認したいときはヒストグラムを作成するとよい。Excelにはヒストグラムを作成する機能も用意されているが、あまり使い勝手がよくないので、自分でヒストグラムを作成してみよう。

最初に「30点台」、「40点台」、「50点台」・・・のデータがそれぞれ何個あるかを調べる。この作業は関数COUNTIFSを使うと実現できる。たとえば、「30点台」のデータの個数を調べるときは、

・30以上(I3セル以上)
・39以下(I3セル+9以下)

を条件にデータの個数をカウントすればよい。なお、関数をオートフィルでコピーできるようにセル範囲は「絶対参照」で指定してある。

  • 関数COUNTIFSで各階級の頻度をカウント

それぞれの階級(X点台)について「データの個数」をカウントできたら、そのデータを使って棒グラフを作成する。これでデータの分布状況を示すヒストグラムを作成できる。

  • 生成した乱数のヒストグラム

今回の例では、上図のようなヒストグラムが作成された。RANDやRANDBETWEENといった関数は乱数を一律に生成するため、多少の“ばらつき”はあるものの、各階級とも大差のないデータ頻度になっている。

このように「一律のデータ分布」ではなく、平均値付近のデータが多い「凸型のデータ分布」にするには、何らかの工夫を施さなければならい。

正規分布に従った乱数の生成

この記事は
Members+会員の方のみ御覧いただけます

ログイン/無料会員登録

会員サービスの詳細はこちら