Excelで一様分布の乱数を作る:2つの値の間の乱数
ひとことで言うと:最小値から最大値までのどの値も、同じ確率で起こります。サイコロを、範囲全体に引き伸ばしたようなものです。
一様分布は、最小値から最大値までのどの値も同じ確率で起こる分布です。Excelでは =min + (max - min) * RAND() で値を引け、整数なら RANDBETWEEN(min, max) で引けます。単価が40〜60(USD)の間にあるとき、平均は50、P10は42、P90は58です。
一様分布とは
2つの数値で決まります。取りうる最も低い値と、最も高い値です。その間の密度は平らなので、範囲のどの部分にも、幅に比例した割合の結果が入ります。範囲の幅が20なら、1単位あたり結果の5.0%が入り、P10は最小値から範囲の10分の1の位置にあります。
グラフの見方:棒は、シミュレーションで引いた10,000個の値がその区間にいくつ入ったかを表し、線は理論上の曲線です。棒が高いほど、その付近の値がよく出ます。ここでは棒の高さがほぼそろっています。範囲のどこも、特別に出やすくはありません。
数式:平均、標準偏差、パーセンタイル
| 量 | 数式と計算例 |
|---|---|
| 平均と中央値 | (min + max) / 2 = 50 |
| 標準偏差 | (max − min) / √12 = 20 / 3.464 = 5.77 |
| パーセンタイルp | min + p × (max − min) P10 = 42、P90 = 58 |
Excelでの一様分布
RAND() 自体が、0〜1の一様乱数です。これを任意の範囲に引き伸ばすと、その範囲の一様乱数になります。1つのセルにまとめると =D9+(F9-D9)*RAND() で、最小がD9、最大がF9にあります。整数には、minからmax(両端を含む)までの整数を返す RANDBETWEEN(min, max) を使います。
| セル | 数式 | 値 |
|---|---|---|
| 乱数 u(I9) | =RAND() | |
| 引いた値(J9) | =D9+(F9-D9)*I9 | |
| 1つのセルで引く | =D9+(F9-D9)*RAND() | |
| 平均(K9) | =(D9+F9)/2 | 50 |
| P10 (L9) | =D9+(F9-D9)*0.1 | 42 |
| P90 (M9) | =D9+(F9-D9)*0.9 | 58 |
数値の確認:理論値と、Excelとxellstormがそれぞれ引いた10,000個の値の比較
| 理論値 | Excel(RAND()) | xellstorm | |
|---|---|---|---|
| 平均 | 50.00 | 49.96 | 50.00 |
| 標準偏差 | 5.77 | 5.78 | 5.77 |
| P10 | 42.00 | 41.97 | 42.00 |
| P50(中央値) | 50.00 | 49.91 | 50.00 |
| P90 | 58.00 | 57.95 | 58.00 |
Excelは RAND() で完全にランダムに引きます。xellstormは範囲全体に均等に散らして引く(ラテンハイパーキューブサンプリング)ので、統計値が理論値に近くなります。
一様分布が合う場面
範囲だけがわかっていて、それ以上のことはわからない場合に使います。範囲内に、他よりもっともらしい値がないということです。これは見かけよりまれです。端より真ん中に賭けたくなるなら、三角分布かPERT分布がそれを表します。同じ40〜60の範囲で、50に山がある三角分布は、結果の75.0%が45〜55に入ります。一様分布で入るのは50.0%だけで、標準偏差は5.77と、三角分布の4.08より大きくなります。
- 向いている使い方:既知の範囲のどこにでも入りうる値(1時間以内の到着、部品上の位置)、どれだけ影響するかを見るために、もっともらしい範囲で動かしてみるパラメーター、より良い見積もりが出る前のモデルの第一版です。
- 向いていない使い方:コストや所要期間のように、極端な値が真ん中より起こりにくいもの、そして明確な限界がないものです。
xellstormで一様分布を入力する
- セルを入力にして、「分布」ステップで一様分布を選び、最小と最大を入力します。整数なら離散一様分布を選びます。
- 過去の値があれば、サイドパネルの「データから」が一様分布を他の形と比べるので、データが本当に平らかどうかがわかります。
「Excelファイルから取り込み」は、=a + (b - a)*RAND() のようなセルを一様分布の入力に、RANDBETWEEN(a, b) を離散一様分布の入力に変換します。アドイン向けのモデルは、RiskUniform、VoseUniform、PsiUniform から変換できます。
よくある質問
Excelで2つの値の間の乱数を作るには?
=min + (max - min) * RAND() を使います。40〜60の値なら =40 + (60 - 40) * RAND() です。整数なら =RANDBETWEEN(40, 60) を使います。どちらも、シートを再計算するたびに引き直します。
一様分布の平均と標準偏差はいくつですか?
平均は中点で、(min + max) / 2 です。標準偏差は (max − min) / √12 で、幅の約0.29倍です。40〜60なら、平均は50、標準偏差は5.77です。
一様分布と三角分布、どちらを使えばよいですか?
範囲内に、他よりもっともらしい値がないなら一様分布、最も可能性の高い値があるなら三角分布かPERT分布を使います。同じ範囲なら、一様分布の方が広く散らばります。標準偏差は5.77で、真ん中に山がある三角分布の4.08を上回ります。
関連ページ
- ガイド
確率分布の選び方:モンテカルロシミュレーションで使う分布はどれか?
2つの質問で、適した確率分布が見つかります。PERT分布、三角分布、正規分布、対数正規分布、ワイブル分布、ポアソン分布、二項分布、ベータ分布などについて、使いどころとExcelの数式を紹介します。 - ガイド
Excelで三角分布の乱数を作る:数式、平均、PERT分布との違い
三角分布は、最小・最頻・最大を直線で結んだ確率に変えます。乱数とパーセンタイルを求めるExcelの数式、平均、PERT分布との違いを解説します。 - ガイド
Excelでモンテカルロシミュレーション:アドインあり・なしの3つの方法
Excelモデルでモンテカルロシミュレーションを実行する3つの方法:RAND()とデータテーブル、アドイン、アドイン不要のブラウザーツール。PERT分布の数式付き。
xellstormは、Excelモデル向けのブラウザー型モンテカルロシミュレーションツールです。アドインは不要で、Excelファイルがパソコンの外に出ることはありません。